انتقل إلى محتوى الدرس
الدرس 12
دورة ReactJS

العرض الشرطي للعناصر في ReactConditional Rendering in React

تحكّم ديناميكياً في إظهار عناصر واجهة React وإخفائها عبر الإرجاع المبكر بجملة if والمعامل الثلاثي والعرض الشرطي الآمن وإرجاع null وتجنب طباعة الصفر.
أقسام الدرس
6
الأمثلة
4
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

تتكيف واجهات التطبيقات الحقيقية باستمرار مع حالة البيانات وصلاحيات المستخدم؛ فتعرض زر تسجيل الدخول للزائر أو بطاقة الملف الشخصي للعضو المسجل، وتُظهر شارة الإنجاز عند اكتمال الدروس فقط. في مكتبة React، لا توجد أوامر قوالب غريبة؛ بل يعتمد العرض الشرطي (Conditional Rendering) كلياً على أدوات الشرط القياسية في JavaScript.

عندما يتغير مخرج المكون بالكامل بناءً على شرط أولي، مثل درس مقفل أو عدم توفر سجل المستخدم بعد، اكتب جملة إرجاع مبكر (Early Return) باستخدام if في بداية دالة المكون قبل جملة الإرجاع الرئيسية؛ مما يحافظ على نظافة شجرة JSX الأساسية دون تداخل معقد.

HTML
function LessonAccessCard({ title, isUnlocked }) {
  if (!isUnlocked) {
    return <p className="rx-card">Locked: {title}</p>;
  }
  return (
    <div className="rx-card">
      <h3>{title} — Ready</h3>
    </div>
  );
}

بما أن الأقواس المعقوفة {} داخل JSX لا تقبل سوى التعابير البرمجية المنتجة لقيمة ولا تقبل جملة if المباشرة، نستخدم المعامل الشرطي الثلاثي (condition ? exprA : exprB) للتبديل الأنيق بين نصين أو كلاسين أو مكونين فرعيين في قلب شجرة العرض.

مخطط يقارن أساليب العرض الشرطي الثلاثة في React: الإرجاع المبكر بجملة if والمعامل الثلاثي والمعامل المنطقي الآمن
HTML
function ServerRow({ region, isHealthy }) {
  return (
    <div className="rx-card">
      <strong>{region}: </strong>
      <span>{isHealthy ? 'Online' : 'Offline'}</span>
    </div>
  );
}

كثيراً ما تحتاج إلى إظهار شارة أو ملاحظة اختيارية عند تحقق شرط معين، وعدم رسم أي عنصر عند عدم تحققه. هنا يبرز تعبير المعامل المنطقي المختصر {isVerified && <VerifiedBadge />}؛ فعندما يكون الطرف الأيسر true يُعيد التعبير عنصر JSX الأيمن، وعندما يكون false تتجاهل React القيمة المنطقية ولا تضيف أي عقدة في المتصفح.

تنبيه هندسي بالغ الأهمية: لا تضع رقماً خاماً على يسار المعامل && مباشرة! فإذا كانت قيمة unreadCount تساوي 0، فإن التعبير 0 && <Badge /> يعيد الرقم 0، وبما أن الصفر رقم قابل للعرض كأي رقم آخر، تطبعه React كحرف 0 مشوِّه على الشاشة.

احرص دائماً على تحويل الشرط الرقمي إلى مقارنة منطقية صريحة مثل unreadCount > 0 && <Badge />.

HTML
function InboxHeader({ count }) {
  return (
    <div className="rx-card">
      <h3>Notifications</h3>
      {count > 0 && (
        <span className="rx-badge">{count} New</span>
      )}
    </div>
  );
}

عندما تريد إخفاء المكون بأكمله بحيث لا يترك حتى وسم حاوية فارغاً في الصفحة، أرجع القيمة null مباشرة من الدالة مثل if (!showBanner) return null;. كما يمكنك إسناد عنصر العرض الشرطي إلى متغير محلي مقروء قبل جملة الإرجاع عندما تتعدد الحالات. يلخص الجدول التالي متى تستخدم كل أسلوب:

أسلوب العرض الشرطينمط الصياغة البرمجيةمتى تختاره هندسياً
الإرجاع المبكر بجملة ifif (!ready) return <Fallback />;تبديل مخرج المكون بالكامل بوضوح في أول الدالة
المعامل الثلاثي المضمن{isPro ? <Pro /> : <Free />}المفاضلة المباشرة بين عنصرين داخل شجرة JSX
المعامل المنطقي الآمن{items.length > 0 && <Badge />}إظهار عنصر اختياري عند تحقق الشرط فقط دون فرع بديل
إرجاع القيمة nullif (hidden) return null;إخفاء المكون كلياً دون ترك أي عقدة فارغة في DOM
HTML
function PromoStrip({ message, visible }) {
  if (!visible) {
    return null;
  }
  return <aside className="rx-card">{message}</aside>;
}
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

تعلمت في هذا الدرس كيفية التحكم الديناميكي في واجهة React عبر الإرجاع المبكر بجملة if والمعامل الثلاثي والمعامل المنطقي الآمن، وتفاديت خطأ طباعة الرقم 0 غير المقصود، واستخدمت إرجاع null لإخفاء المكونات بنظافة. الخطوة التالية: انتقل الآن إلى الدرس رقم 13 «عرض القوائم وتصفيتها باستخدام map وfilter» لمواصلة البناء التراكمي المتدرج في مسار React الحديث.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Conditional Rendering العرض الشرطي
إرجاع عناصر واجهة مختلفة أو إخفاء أجزاء منها ديناميكياً بناءً على قيم الخصائص أو الشروط البرمجية.
للمراجعة
02 Early Return Guard حارس الإرجاع المبكر
شرط فحص في مطلع دالة المكون يعيد واجهة بديلة أو null فوراً قبل الوصول إلى شجرة العرض الرئيسية.
للمراجعة
03 Short-Circuit Evaluation التقييم المنطقي المختصر
سلوك في JavaScript يتوقف فيه المعامل المنطقي فوراً ويعيد الطرف الأيسر إن كان كاذباً أو يعيد الأيمن إن كان صائباً.
للمراجعة
04 Null Render الإرجاع الفارغ null
إرجاع القيمة null من دالة المكون لإخفائه بصرياً بالكامل دون إضافة أي عنصر في شجرة المتصفح.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 JSX JSX
JavaScript XML
صياغة تقبل التعابير البرمجية كالمعامل الثلاثي والمقارنات المنطقية داخل الأقواس المعقوفة.
للمراجعة
02 UI UI
User Interface
تتكيف لحظياً مع صلاحيات المستخدم وحالة توفر البيانات عبر التفرعات الشرطية.
للمراجعة
03 DOM DOM
Document Object Model
لا تُنشأ فيها أي عقدة عندما يعيد التعبير الشرطي في React قيمة منطقية كاذبة أو null.
للمراجعة
04 RBAC RBAC
Role-Based Access Control
نمط التحكم بالوصول حسب الدور، وينعكس في الواجهة بإظهار أدوات الإدارة شرطياً مع التحقق الفعلي بالخادم.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. افتح مثال InboxHeader في محرر التجريب وجرّب تمرير 0 ثم 7 وتأكد من عدم طباعة رقم صفر شارد في الواجهة.

  2. افتح مثال PromoStrip في محرر التجريب وعدّل خاصية الإظهار من false إلى true لمشاهدة كلا التنبيهين.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

10أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي10 أسئلة تنتظرك
01

لماذا لا يمكن كتابة جملة الشرط if (isAdmin) مباشرة بداخل الأقواس المعقوفة {} في JSX؟

لأن أقواس JSX تقبل التعابير المنتجة لقيمة فقط مثل المعامل الثلاثي، بينما تُعد if جملة تحكمية وليست تعبيراً.

02

ماذا يظهر على الشاشة إذا كانت قيمة count تساوي 0 وكتبت داخل الواجهة {count && <span>Items</span>}؟

يعيد التعبير الرقم 0 نفسه، وتقوم React بطباعة الرقم 0 كنص مرئي على الشاشة.

03

كيف تصحح التعبير {count && <Badge />} لضمان عدم طباعة أي شيء عندما تساوي قيمة count صفراً؟

نحول الشرط إلى مقارنة منطقية صريحة مثل {count > 0 && <Badge />} لتعيد false عند الصفر.

04

ما القيمة التي ينبغي أن تعيدها دالة المكون في React عندما تريد إخفاءه تماماً دون رسم أي عنصر؟

إرجاع القيمة null يوجّه React لعدم إنشاء أي عقدة في شجرة المتصفح لذلك المكون.

05

تتجاهل React رسم أي عقدة في المتصفح عندما تكون نتيجة تعبير JSX هي false أو null أو undefined.

صواب؛ فهذه القيم لا تنتج أي مخرجات نصية أو عناصر في شجرة DOM.

06

أين توضع جملة الإرجاع المبكر if (!data) return <EmptyState /> داخل دالة المكون؟

توضع في أعلى جسم دالة المكون قبل جملة الإرجاع الرئيسية لتبسيط قراءة الكود.

07

أي معامل برمجي يتيح المفاضلة النظيفة بين <OnlineBadge /> و<OfflineBadge /> مباشرة داخل JSX؟

يُستخدم المعامل الشرطي الثلاثي (? :) للاختيار المباشر بين عنصرين داخل شجرة JSX.

08

يُنصح بتكديس أربعة أو خمسة معاملات ثلاثية متداخلة بدلاً من فصل المنطق في متغير واضح أو إرجاع مبكر.

خطأ؛ فالتداخل المفرط للمعاملات الثلاثية يضعف مقروئية الكود وصيانته.

09

إخفاء زر الحذف الإداري شرطياً في واجهة React يكفي لتأمين النظام دون التحقق من الصلاحية في الخادم.

خطأ؛ فالعرض الشرطي في المتصفح يحسّن تجربة الاستخدام فقط، ويجب فرض التحقق الأمني الفعلي في الخادم دائماً.

10

لماذا قد يسند المطور عنصر JSX إلى متغير محلي let badge قبل جملة الإرجاع ويحدثه داخل جمل if؟

لتنظيم الشروط المتعددة بوضوح تام وإبقاء شجرة الإرجاع النهائية نظيفة ومختصرة.