0Pricing
React Academy · درس

الخانات المسمّاة عبر Props من نوع Object

طبّقوا خانات header وbody وfooter بتمرير JSX عبر props مسمّاة

الخانات المسمّاة عبر Props من نوع Object درس مجاني في React Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

مرحبًا

في هذا الدرس ستنفذ منافذ مسماة مرنة من خلال تمرير JSX باستخدام خصائص مسماة، مما يتيح إنشاء مكوّنات تخطيط تحتوي على مناطق header وbody وfooter من دون بنية children جامدة.

محدودية children

تعمل خاصية `children` الواحدة مع منطقة واحدة. وعندما يحتاج المكوّن إلى عدة مناطق محتوى مستقلة، مثل بطاقة تحتوي على ترويسة وتذييل، تكون الخصائص المسماة التي تحمل JSX هي الحل الأنسب.

منافذ الخصائص المسماة

عرّف خاصية لكل منفذ في واجهة المكوّن. يمرر المكوّن الأب JSX إلى كل خاصية، ثم يعرض المكوّن كل منفذ في الموضع الصحيح.
function Card({ header, body, footer }) {
  return (
    <div className="card">
      <div className="card-header">{header}</div>
      <div className="card-body">{body}</div>
      <div className="card-footer">{footer}</div>
    </div>
  );
}

// Usage
<Card
  header={<h2>Title</h2>}
  body={<p>Content here</p>}
  footer={<button>OK</button>}
/>

المنافذ الاختيارية

اجعل المنافذ اختيارية من خلال عرضها فقط عندما تكون الخاصية ذات قيمة صحيحة. يتيح ذلك للمكوّن نفسه العمل مع تذييل أو من دونه، على سبيل المثال.
function Card({ header, children, footer }) {
  return (
    <div>
      {header && <div className="header">{header}</div>}
      <div className="body">{children}</div>
      {footer && <div className="footer">{footer}</div>}
    </div>
  );
}

الدمج بين children والمنافذ المسماة

استخدم `children` لمنطقة المحتوى الأساسية، والخصائص المسماة للمناطق الثانوية. يتبع ذلك مبدأ جعل حالة الاستخدام الأكثر شيوعًا الأسهل من ناحية الاستخدام.
<Dialog
  title="Confirm"
  actions={<><button>Cancel</button><button>OK</button></>}
>
  <p>Are you sure?</p>  {/* children = primary slot */}
</Dialog>

TypeScript: تحديد نوع المنافذ المسماة

حدّد نوع خصائص المنافذ المسماة باستخدام `React.ReactNode` لقبول أي محتوى JSX.
interface CardProps {
  header?: React.ReactNode;
  children: React.ReactNode;
  footer?: React.ReactNode;
}

المنافذ المسماة مقابل المكوّنات المركبة

الخصائص المسماة بسيطة وواضحة. أما المكوّنات المركبة، مثل ``، فهي أسهل استخدامًا مع عائلات المكوّنات المعقدة، لكنها تتطلب إعدادًا أكبر باستخدام Context. ابدأ بالخصائص المسماة، ثم انتقل إليها إذا لزم الأمر.

تمرير المكوّنات بصفتها منافذ

يمكنك أيضًا تحديد نوع المنفذ على أنه مكوّن React، وليس JSX. يمرر المكوّن الأب مرجع المكوّن، ثم يعرضه مكوّن التخطيط. ويمنح ذلك مكوّن التخطيط التحكم في وقت عرض المنفذ وعدد مرات عرضه.
function Timeline({ renderItem, items }) {
  return (
    <ul>
      {items.map(item => (
        <li key={item.id}>{renderItem(item)}</li>
      ))}
    </ul>
  );
}

<Timeline
  items={data}
  renderItem={item => <EventCard event={item} />}
/>

تركيب التخطيط باستخدام المنافذ المسماة

تستخدم مكوّنات تخطيط الصفحات المنافذ المسماة على نطاق واسع. يتيح مكوّن هيكل الصفحة الذي يحتوي على منافذ `sidebar` و`toolbar` و`content` للصفحات المختلفة تركيب الهيكل نفسه مع محتوى مختلف تمامًا في كل منطقة.

توثيق المنافذ المسماة

توثّق المنافذ المسماة نفسها من خلال واجهات TypeScript أو PropTypes. ويمكن للمستهلكين معرفة المنافذ المتاحة والمنافذ الاختيارية تحديدًا، مما يقلل الحاجة إلى توثيق خارجي.

اختبار سريع

ما نوع TypeScript الذي ينبغي استخدامه لخاصية منفذ مسمى تقبل أي JSX؟

مراجعة

تجعل خصائص المنافذ المسماة مكوّنات التخطيط مرنة وسهلة التوثيق. استخدم children للمنطقة الرئيسية، والخصائص المسماة للمناطق الثانوية، وحدد نوعها باستخدام React.ReactNode.

التالي

الدرس التالي: **Cloning & Injecting Props with cloneElement** — ستستخدم React.cloneElement لتمرير خصائص مخفية من المكوّن الأب إلى children.

الأسئلة الشائعة

هل درس «الخانات المسمّاة عبر Props من نوع Object» مجاني؟

نعم — نص درس «الخانات المسمّاة عبر Props من نوع Object» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «الخانات المسمّاة عبر Props من نوع Object»؟

طبّقوا خانات header وbody وfooter بتمرير JSX عبر props مسمّاة تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «الخانات المسمّاة عبر Props من نوع Object»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات props.children
  2. أدوات React.Children
  3. الخانات المسمّاة عبر Props من نوع Object
  4. استنساخ Props وحقنها باستخدام cloneElement
← العودة إلى React Academy