0Pricing
React Academy · درس

تمرير Props عبر مستويات متعددة: متى يسبب مشكلة ومتى يكون مناسبًا

حدّدوا سلاسل التمرير العميقة وميّزوا بين التعقيد الزائد والتعقيد الحقيقي

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

مرحبًا

في هذا الدرس ستتعلّم كيفية التعرّف على تمرير الخصائص عبر المكوّنات، وفهم الحالات التي يسبب فيها مشكلات حقيقية، والتمييز بينه وبين الحالات التي يكون فيها تمرير الخصائص هو الحل الصحيح والبسيط.

ما المقصود بتمرير الخصائص عبر المكوّنات؟

يحدث تمرير الخصائص عبر المكوّنات عندما تمرّر خاصية عبر مكوّنات وسيطة لا تستخدمها بنفسها، بل يحتاج إليها أبناؤها فقط. ويجب على كل طبقة وسطية قبول الخاصية وتمريرها.
// Middle component: receives 'user' only to pass it down
function Layout({ user }) {
  return <Sidebar user={user} />;
}
// Sidebar: receives 'user' only to pass it down
function Sidebar({ user }) {
  return <UserAvatar user={user} />;
}
// UserAvatar: actually uses 'user'
function UserAvatar({ user }) {
  return <img src={user.avatarUrl} />;
}

متى يكون تمرير الخصائص مناسبًا

غالبًا ما يكون تمرير الخصائص عبر مستوى أو مستويين مناسبًا تمامًا، وهو أبسط حل. فتكلـفة إضافة Context أو مكتبة لإدارة الحالة أعلى من تكلفة إضافة خاصية أخرى عندما يكون العمق بسيطًا.

مؤشرات تحوّل تمرير الخصائص إلى مشكلة

يصبح تمرير الخصائص مشكلة عندما: (1) تمر الخصائص عبر 4 مستويات أو أكثر من المكوّنات التي لا تستخدمها، (2) يتطلب تغيير اسم خاصية إجراء تغييرات في ملفات كثيرة، (3) يصعب تحديد المكوّن الذي يستهلك البيانات فعليًا.

إعادة الهيكلة باستخدام تركيب المكوّنات

قبل اللجوء إلى Context، جرّب **تركيب المكوّنات**. مرّر المكوّن المستهلك بعد عرضه بالكامل باعتباره خاصية (أو children) بدلًا من البيانات الخام. ولن تحتاج الطبقة الوسطية إلى معرفة أي شيء عن البيانات.
// Instead of drilling 'user' through Layout → Sidebar → UserAvatar,
// render UserAvatar at the top level and pass it as a slot:
function App() {
  return <Layout sidebar={<UserAvatar user={user} />} />;
}

تركيب المكوّنات يقلّل الترابط

يعني التركيب أن المكوّن الأب الذي يملك البيانات يعرض المكوّن المستهلك مباشرةً أيضًا. وتتلقى مكوّنات التخطيط الوسيطة JSX جاهزًا، ولذلك تكون منفصلة تمامًا عن البيانات.

متى تستخدم Context

استخدم Context عندما: (1) يتطلب التركيب تمرير JSX معقّد عبر طبقات كثيرة، (2) تحتاج مكوّنات كثيرة غير مرتبطة ببعضها عبر شجرة المكوّنات إلى البيانات نفسها، مثل المستخدم الحالي أو السمة أو اللغة المحلية.

متى تستخدم مكتبة لإدارة الحالة

استخدم Zustand أو Redux أو ما شابه عندما تكون الحالة معقّدة، أو تتحدّث باستمرار، أو تحتاج إلى أدوات المطوّر، أو يجب مشاركتها عبر أشجار مكوّنات منفصلة تمامًا.

تدفّق البيانات العكسي

ينطبق تمرير الخصائص عبر المكوّنات أيضًا على دوال الاستدعاء. فتمرير معالج `onChange` عبر خمسة مستويات مؤلم بقدر تمرير البيانات. طبّق استراتيجيات التركيب وContext نفسها على دوال الاستدعاء.

مسار اتخاذ القرار

اسأل نفسك: كم عدد المستويات؟ مستوى أو مستويان: مرّر الخاصية مباشرةً. 3 مستويات أو أكثر: جرّب التركيب أولًا. إذا ظل الأمر معقّدًا: استخدم Context. إذا كانت منطقية التحديث معقّدة أو امتدت عبر أشجار مختلفة: استخدم مكتبة لإدارة الحالة.

تحقّق سريعًا

ما الحل الذي ينبغي أن تجرّبه قبل اللجوء إلى Context لحل مشكلة تمرير الخصائص عبر المكوّنات؟

مراجعة

تمرير الخصائص عبر مستوى أو مستويين مناسب. بعد 3 مستويات، جرّب تركيب المكوّنات أولًا. استخدم Context عندما يستهلك مكوّنات كثيرة البيانات نفسها. واستخدم مكتبة لإدارة الحالة للحالات المعقّدة أو الممتدة عبر أشجار مختلفة.

التالي

الدرس التالي: **أنماط التواصل بين المكوّنات الشقيقة** — ستنسّق بين مكوّنين شقيقين من خلال حالة مشتركة في المكوّن الأب وخصائص دوال الاستدعاء.

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

هل درس «تمرير Props عبر مستويات متعددة: متى يسبب مشكلة ومتى يكون مناسبًا» مجاني؟

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

ماذا ستتعلم في «تمرير Props عبر مستويات متعددة: متى يسبب مشكلة ومتى يكون مناسبًا»؟

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

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

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

كم من الوقت يستغرق درس «تمرير Props عبر مستويات متعددة: متى يسبب مشكلة ومتى يكون مناسبًا»؟

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

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

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

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

  1. رفع الحالة إلى الأعلى: المبادئ والأمثلة
  2. تمرير Props عبر مستويات متعددة: متى يسبب مشكلة ومتى يكون مناسبًا
  3. أنماط التواصل بين المكوّنات الشقيقة
  4. اختيار الموقع المناسب للحالة
← العودة إلى React Academy