الفرق بين المراجعتين ل"React/lists and keys"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 11: سطر 11:
  
 
== تصيير مكونات متعددة ==
 
== تصيير مكونات متعددة ==
بإمكانك بناء مجموعات من العناصر وتضمينها في JSX باستخدام الأقواس <code>{}</code>.
+
بإمكانك بناء مجموعات من العناصر و<nowiki/>[[React/introducing jsx#.D8.AA.D8.B6.D9.85.D9.8A.D9.86 .D8.A7.D9.84.D8.AA.D8.B9.D8.A7.D8.A8.D9.8A.D8.B1 .D9.81.D9.8A JSX|تضمينها في JSX]] باستخدام الأقواس <code>{}</code>.
  
في المثال التالي سنستخدم الدالة <code>map()</code>‎ للمرور على جميع عناصر مصفوفة الأرقام <code>numbers</code> بحيث نُعيد عنصر <code>[[HTML/li|<nowiki><li></nowiki>]]</code> لكل عنصر من هذه المصفوفة. وأخيرا نُعيِّن مصفوفة العناصر الناتجة إلى المتغير <code>listItems</code>:
+
في المثال التالي سنستخدم الدالة <code>map()</code>‎ للمرور على جميع عناصر مصفوفة الأرقام <code>numbers</code> بحيث نُعيد عنصر <code>[[HTML/li|<nowiki><li></nowiki>]]</code> لكل عنصر من هذه المصفوفة. وأخيرا نُعيِّن مصفوفة العناصر الناتجة إلى المتغير <code>listItems</code>:<syntaxhighlight lang="javascript">
 +
const numbers = [1, 2, 3, 4, 5];
 +
const listItems = numbers.map((number) =>
 +
  <li>{number}</li>
 +
);
 +
</syntaxhighlight>نضع الآن كامل المصفوفة <code>listItems</code> بداخل عنصر <code>[[HTML/ul|<nowiki><ul></nowiki>]]</code>، ونُصيِّره إلى DOM:<syntaxhighlight lang="javascript">
 +
ReactDOM.render(
 +
  <ul>{listItems}</ul>,
 +
  document.getElementById('root')
 +
);
 +
</syntaxhighlight>[https://codepen.io/gaearon/pen/GjPyQr?editors=0011 جرب المثال على موقع CodePen].
 +
 
 +
تعرض هذه الشيفرة قائمة منقطة مؤلفة من الأرقام بين 1 و 5.
 +
 
 +
== مكون يحتوي على قائمة بسيطة ==
 +
نُصيِّر عادةً القوائم بداخل [[React/components and props|المُكوِّنات]]، لذلك بإمكاننا إعادة كتابة المثال السابق باستخدام مُكوِّن يقبل مصفوفة من الأرقام تُدعى <code>numbers</code> ويعرض عناصرها على شكل قائمة غير مرتبة:<syntaxhighlight lang="javascript">
 +
function NumberList(props) {
 +
  const numbers = props.numbers;
 +
  const listItems = numbers.map((number) =>
 +
    <li>{number}</li>
 +
  );
 +
  return (
 +
    <ul>{listItems}</ul>
 +
  );
 +
}
 +
 
 +
const numbers = [1, 2, 3, 4, 5];
 +
ReactDOM.render(
 +
  <NumberList numbers={numbers} />,
 +
  document.getElementById('root')
 +
);
 +
</syntaxhighlight>

مراجعة 11:18، 17 يوليو 2018

فلنتذكّر أولًا كيفيّة تحويل القوائم في JavaScript.

في المثال التالي سنستخدم الدالة  map()‎ لمضاعفة قيم مصفوفة من الأرقام اسمها numbers، وسنُعيِّن المصفوفة الجديدة التي تُعيدها الدالة map()‎ إلى المتغير doubled ثم نعرض محتواه عبر التابع console.log()‎:

const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map((number) => number * 2);
console.log(doubled);

نتيجة تنفيذ هذا المثال هي [2, 4, 6, 8, 10].

يكون تحويل المصفوفات في React إلى قوائم من العناصر مماثلًا تقريبا لذلك.

تصيير مكونات متعددة

بإمكانك بناء مجموعات من العناصر وتضمينها في JSX باستخدام الأقواس {}.

في المثال التالي سنستخدم الدالة map()‎ للمرور على جميع عناصر مصفوفة الأرقام numbers بحيث نُعيد عنصر <li> لكل عنصر من هذه المصفوفة. وأخيرا نُعيِّن مصفوفة العناصر الناتجة إلى المتغير listItems:

const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) =>
  <li>{number}</li>
);

نضع الآن كامل المصفوفة listItems بداخل عنصر <ul>، ونُصيِّره إلى DOM:

ReactDOM.render(
  <ul>{listItems}</ul>,
  document.getElementById('root')
);

جرب المثال على موقع CodePen.

تعرض هذه الشيفرة قائمة منقطة مؤلفة من الأرقام بين 1 و 5.

مكون يحتوي على قائمة بسيطة

نُصيِّر عادةً القوائم بداخل المُكوِّنات، لذلك بإمكاننا إعادة كتابة المثال السابق باستخدام مُكوِّن يقبل مصفوفة من الأرقام تُدعى numbers ويعرض عناصرها على شكل قائمة غير مرتبة:

function NumberList(props) {
  const numbers = props.numbers;
  const listItems = numbers.map((number) =>
    <li>{number}</li>
  );
  return (
    <ul>{listItems}</ul>
  );
}

const numbers = [1, 2, 3, 4, 5];
ReactDOM.render(
  <NumberList numbers={numbers} />,
  document.getElementById('root')
);