0Pricing
React Academy · درس

أساسيات props.children

مرّروا JSX بوصفه children، وصيّروا children مفردة ومتعددة، وصيّروا children بشكل شرطي

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

مرحبًا

في هذا الدرس ستتقن كيفية تمرير JSX بصفتها children، وعرض child واحد أو عدة children، وعرض children بشكل شرطي في مكوّنات React.

خاصية children

يتاح أي JSX موضوع بين وسمَي فتح المكوّن وإغلاقه تلقائيًا من خلال `props.children`. بهذه الطريقة يمكنك إنشاء مكوّنات التغليف أو التخطيط.
function Card({ children }) {
  return <div className="card">{children}</div>;
}

// Usage
<Card><p>Hello world</p></Card>

عنصر ابن واحد مقابل عدة عناصر أبناء

عند تمرير child واحد، تكون `children` عنصر React. وعند تمرير عدة children، تكون `children` مصفوفة. يتغير السلوك بناءً على عدد العناصر الممرَّرة.
<Card>One child</Card>          // children is a string
<Card><p>A</p><p>B</p></Card>  // children is an array

عرض children مباشرة

أبسط استخدام لـ children هو عرضها مباشرةً داخل JSX. يتحكم المكوّن الأب في التخطيط والتنسيق، بينما يتحكم المستهلك في المحتوى.
function Section({ title, children }) {
  return (
    <section>
      <h2>{title}</h2>
      <div className="content">{children}</div>
    </section>
  );
}

العرض الشرطي لـ children

تحقق من تمرير children قبل عرضها. يمكن للمكوّن توفير محتوى بديل إذا لم يتم تمرير أي children.
function Panel({ children }) {
  if (!children) return <p>Nothing to show</p>;
  return <div className="panel">{children}</div>;
}

children كـ render prop

يمكن أن تكون children أيضًا **دالة** وفق نمط render prop. يستدعيها المكوّن الأب مع تمرير البيانات إليها، بينما يتحكم المستهلك في طريقة العرض. هذا نمط أقدم، وغالبًا ما تحل الخطافات المخصصة محله اليوم.
function DataLoader({ children }) {
  const data = useFetchData();
  return children(data); // consumer receives data
}

<DataLoader>{data => <ul>{data.map(...)}</ul>}</DataLoader>

تمرير children كخاصية

لا يلزم استخدام children للفتحة الخاصة `{children}`. يمكنك تمرير JSX من خلال أي اسم خاصية. وهذا هو الأساس الذي تقوم عليه المنافذ المسماة.
function Layout({ header, footer, children }) {
  return (
    <div>
      <header>{header}</header>
      <main>{children}</main>
      <footer>{footer}</footer>
    </div>
  );
}

children افتراضية

يمكنك توفير children افتراضية باستخدام صيغة المعامل الافتراضي في JavaScript أثناء التفكيك. إذا لم يمرر المكوّن الأب أي شيء، فسيظهر المحتوى الافتراضي.
function Button({ children = 'Click me' }) {
  return <button>{children}</button>;
}

Fragments وchildren متعددة

لإرجاع عدة عناصر من دون div تغليف، استخدم `React.Fragment` أو الصيغة المختصرة `<>...`. وهذا مناسب لمكوّنات التخطيط عندما تتسبب عقدة DOM إضافية في كسر CSS.
function Row({ children }) {
  return <>{children}</>;
}

TypeScript: تحديد نوع children

في TypeScript استخدم `React.ReactNode` لتحديد نوع children؛ فهو يقبل العناصر والسلاسل النصية والأرقام والمصفوفات والقيمتين null وundefined.
interface Props {
  children: React.ReactNode;
}

function Box({ children }: Props) {
  return <div>{children}</div>;
}

اختبار سريع

عند تمرير عدة عناصر JSX بين وسمَي المكوّن، ما نوع `props.children`؟

مراجعة

تحتوي `props.children` على أي JSX ممرَّرة بين الوسوم. يكون child الواحد عنصرًا، بينما تكون children المتعددة مصفوفة. استخدم عمليات التحقق الشرطية مع children الاختيارية، واستخدم الخصائص المسماة للمنافذ المسماة.

التالي

الدرس التالي: **React.Children Utilities** — ستستخدم React.Children.map وcount وtoArray لمعالجة children بأمان، بصرف النظر عن نوعها أو عددها.

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

هل درس «أساسيات props.children» مجاني؟

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

ماذا ستتعلم في «أساسيات props.children»؟

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

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

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

كم من الوقت يستغرق درس «أساسيات props.children»؟

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

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

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

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

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