الفرق بين المراجعتين لصفحة: «React/fragments»
تحديث |
|||
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 11: | سطر 11: | ||
} | } | ||
</syntaxhighlight>هناك أيضًا [[React/fragments#.D8.B5.D9.8A.D8.A7.D8.BA.D8.A9 .D9.85.D8.AE.D8.AA.D8.B5.D8.B1.D8.A9|صياغة مختصرة]] جديدة للتصريح | </syntaxhighlight>هناك أيضًا [[React/fragments#.D8.B5.D9.8A.D8.A7.D8.BA.D8.A9 .D9.85.D8.AE.D8.AA.D8.B5.D8.B1.D8.A9|صياغة مختصرة]] جديدة للتصريح عنها. | ||
== البداية == | == البداية == | ||
سطر 88: | سطر 88: | ||
</syntaxhighlight>بإمكانك استخدام <code><></></code> بنفس الطريقة التي تستخدم بها أي عنصر آخر عدا أنها لا تدعم المفاتيح أو الخاصيّات. | </syntaxhighlight>بإمكانك استخدام <code><></></code> بنفس الطريقة التي تستخدم بها أي عنصر آخر عدا أنها لا تدعم المفاتيح أو الخاصيّات. | ||
== استخدام الأجزاء مع المفاتيح == | == استخدام الأجزاء مع المفاتيح == | ||
سطر 123: | سطر 121: | ||
* [[React/reconciliation|المطابقة (Reconciliation)]] | * [[React/reconciliation|المطابقة (Reconciliation)]] | ||
* [[React/context|استخدام السياق (Context) في React]] | * [[React/context|استخدام السياق (Context) في React]] | ||
* [[React/portals|المداخل (Portals) في React]] | * [[React/portals|المداخل (Portals) في React]] | ||
* [[React/error boundaries|حدود الأخطاء]] | * [[React/error boundaries|حدود الأخطاء]] | ||
سطر 136: | سطر 133: | ||
== مصادر== | == مصادر== | ||
*[https://reactjs.org/docs/fragments.html صفحة استخدام الأجزاء (Fragments) في React في توثيق React الرسمي]. | *[https://reactjs.org/docs/fragments.html صفحة استخدام الأجزاء (Fragments) في React في توثيق React الرسمي]. | ||
[[تصنيف:React]] | |||
[[تصنيف:React Advanced Guides]] |
المراجعة الحالية بتاريخ 18:25، 3 نوفمبر 2020
من الأنماط الشائعة في React هي إعادة المكوّن لعناصر متعددة. تتيح لك الأجزاء (Fragments) تجميع قائمة من العناصر الأبناء بدون إضافة عُقَد إضافيّة إلى DOM.
render() {
return (
<React.Fragment>
<ChildA />
<ChildB />
<ChildC />
</React.Fragment>
);
}
هناك أيضًا صياغة مختصرة جديدة للتصريح عنها.
البداية
من الأنماط الشائعة للمكوّن هي إعادة قائمة من المكونات الأبناء. انظر إلى هذا المثال:
class Table extends React.Component {
render() {
return (
<table>
<tr>
<Columns />
</tr>
</table>
);
}
}
سيحتاج المكوّن <Columns />
إلى إعادة عناصر <td>
متعددة لكي تكون HTML المُصيَّرة صالحة. إن كان عنصر div
الأب مُستخدمًا بداخل التابع render()
للمكون <Columns />
فستكون HTML الناتجة غير صالحة:
class Columns extends React.Component {
render() {
return (
<div>
<td>أهلًا</td>
<td>بالعالم</td>
</div>
);
}
}
ينتج عنه جدول <Table />
:
<table>
<tr>
<div>
<td>أهلًا</td>
<td>بالعالم</td>
</div>
</tr>
</table>
وبهذا نقدم الأجزاء Fragments
.
الاستخدام
class Columns extends React.Component {
render() {
return (
<React.Fragment>
<td>أهلًا</td>
<td>بالعالم</td>
</React.Fragment>
);
}
}
والذي ينتج عنه جدول صحيح <Table />
:
<table>
<tr>
<td>أهلًا</td>
<td>بالعالم</td>
</tr>
</table>
صياغة مختصرة
هنالك صياغة جديدة مختصرة أكثر بإمكانك استخدامها للتصريح عن الأجزاء. تبدو هذه الصياغة مثل العناصر الفارغة:
class Columns extends React.Component {
render() {
return (
<>
<td>أهلًا</td>
<td>بالعالم</td>
</>
);
}
}
بإمكانك استخدام <></>
بنفس الطريقة التي تستخدم بها أي عنصر آخر عدا أنها لا تدعم المفاتيح أو الخاصيّات.
استخدام الأجزاء مع المفاتيح
يُمكِن للأجزاء المُصرَّح عنها عن طريق الصياغة <React.Fragment>
أن تمتلك مفاتيح. إحدى حالات الاستخدام لها هي ربط مجموعة إلى مصفوفة من الأجزاء، على سبيل المثال لإنشاء قائمة للوصف:
function Glossary(props) {
return (
<dl>
{props.items.map(item => (
// بدون وجود مفتاح ستطلق React تحذيرًا
<React.Fragment key={item.id}>
<dt>{item.term}</dt>
<dd>{item.description}</dd>
</React.Fragment>
))}
</dl>
);
}
الخاصية الوحيدة التي يمكن تمريرها للأجزاء هي المفتاح key
. قد نُضيف مستقبلًا دعم لخاصيّات إضافية مثل مُعالجات الأحداث.
تجربة المثال
بإمكانك تجربة صياغة الأجزاء الجديدة في JSX عن طريق هذا المثال في موقع CodePen.
انظر أيضًا
- شرح JSX بالتفصيل
- التحقق من الأنواع الثابتة
- التحقق من الأنواع باستخدام PropTypes
- استخدام المراجع مع DOM
- المكونات غير المضبوطة
- تحسين الأداء
- React بدون ES6
- React بدون JSX
- المطابقة (Reconciliation)
- استخدام السياق (Context) في React
- المداخل (Portals) في React
- حدود الأخطاء
- مكونات الويب
- المكونات ذات الترتيب الأعلى
- تمرير المراجع
- خاصيات التصيير
- تكامل React مع المكتبات الأخرى
- سهولة الوصول
- تقسيم الشيفرة
- الوضع الصارم (Strict Mode)