الفرق بين المراجعتين لصفحة: «React/fragments»
Kinan-mawed (نقاش | مساهمات) لا ملخص تعديل |
تحديث |
||
(3 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة) | |||
سطر 11: | سطر 11: | ||
} | } | ||
</syntaxhighlight>هناك أيضًا صياغة مختصرة جديدة للتصريح | </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|صياغة مختصرة]] جديدة للتصريح عنها. | ||
== البداية == | == البداية == | ||
سطر 89: | سطر 89: | ||
</syntaxhighlight>بإمكانك استخدام <code><></></code> بنفس الطريقة التي تستخدم بها أي عنصر آخر عدا أنها لا تدعم المفاتيح أو الخاصيّات. | </syntaxhighlight>بإمكانك استخدام <code><></></code> بنفس الطريقة التي تستخدم بها أي عنصر آخر عدا أنها لا تدعم المفاتيح أو الخاصيّات. | ||
== استخدام الأجزاء مع المفاتيح == | |||
يُمكِن للأجزاء المُصرَّح عنها عن طريق الصياغة <code><React.Fragment></code> أن تمتلك مفاتيح. إحدى حالات الاستخدام لها هي ربط مجموعة إلى مصفوفة من الأجزاء، على سبيل المثال لإنشاء قائمة للوصف:<syntaxhighlight lang="javascript"> | |||
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> | |||
); | |||
} | |||
== | </syntaxhighlight>الخاصية الوحيدة التي يمكن تمريرها للأجزاء هي المفتاح <code>key</code>. قد نُضيف مستقبلًا دعم لخاصيّات إضافية مثل مُعالجات الأحداث. | ||
== تجربة المثال == | |||
بإمكانك تجربة صياغة الأجزاء الجديدة في JSX عن طريق هذا المثال في موقع [https://codepen.io/reactjs/pen/VrEbjE?editors=1000 CodePen]. | |||
== انظر أيضًا == | |||
* [[React/jsx in depth|شرح JSX بالتفصيل]] | |||
* [[React/static type checking|التحقق من الأنواع الثابتة]] | |||
* [[React/typechecking with proptypes|التحقق من الأنواع باستخدام PropTypes]] | |||
* [[React/refs and the dom|استخدام المراجع مع DOM]] | |||
* [[React/uncontrolled components|المكونات غير المضبوطة]] | |||
* [[React/optimizing performance|تحسين الأداء]] | |||
* [[React/react without es6|React بدون ES6]] | |||
* [[React/react without jsx|React بدون JSX]] | |||
* [[React/reconciliation|المطابقة (Reconciliation)]] | |||
* [[React/context|استخدام السياق (Context) في React]] | |||
* [[React/portals|المداخل (Portals) في React]] | |||
* [[React/error boundaries|حدود الأخطاء]] | |||
* [[React/web components|مكونات الويب]] | |||
* [[React/higher order components|المكونات ذات الترتيب الأعلى]] | |||
* [[React/forwarding refs|تمرير المراجع]] | |||
* [[React/render props|خاصيات التصيير]] | |||
* [[React/integrating with other libraries|تكامل React مع المكتبات الأخرى]] | |||
* [[React/accessibility|سهولة الوصول]] | |||
* [[React/code splitting|تقسيم الشيفرة]] | |||
* [[React/strict mode|الوضع الصارم (Strict Mode)]] | |||
== مصادر== | |||
*[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)