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

بناء أول مكون دالي في ReactYour First Functional Component

ابنِ أول مكون دالي في React بدوال JavaScript القياسية، والتزم بقاعدة التسمية PascalCase وإرجاع عدة أسطر بأمان، وركّب المكونات المتداخلة مع تجنب فخ تعريف مكون بداخل آخر.
أقسام الدرس
6
الأمثلة
4
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
1
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

يُبنى المكون الدالي (Functional Component) في معيار React الحديث كدالة JavaScript قياسية تماماً تُعيد توصيف JSX يمثل جزءاً محدداً من واجهة المستخدم. لا تحتاج إلى وراثة أصناف معقدة أو تسجيل قوالب خاصة؛ بل تكتب تصريح دالة واضح مثل function CourseBadge() أو دالة سهمية محفوظة في ثابت const.

عندما ترسم React الشاشة، تستدعي دالة المكون وتقرأ هيكل العناصر المُعاد منها ثم تطابق شجرة DOM في المتصفح معه تلقائياً.

HTML
function CourseBadge() {
  return (
    <article className="rx-card">
      <span className="rx-badge">Module 02</span>
      <h3>Modern Functional Components</h3>
      <p>Built with plain JavaScript functions.</p>
    </article>
  );
}

يجب أن يبدأ اسم أي مكون في React بحرف إنجليزي كبير وفق نمط PascalCase مثل ProfileCard وSearchHeader وPrimaryButton. ليست هذه القاعدة مجرد ذوق تنسيقي، بل يعتمد عليها مترجم JSX للتفريق الحاسم بين عناصر المتصفح ومكوناتك:

  • الوسوم التي تبدأ بحرف صغير مثل <section> و<button> تُعامل كوسوم HTML مدمجة في المتصفح.
  • الوسوم التي تبدأ بحرف كبير مثل <ProfileCard /> تُترجم كاستدعاء مباشر لدالتك البرمجية ProfileCard.
HTML
function VerifiedTag() {
  return <span className="rx-badge">Verified Lab</span>;
}

function LabHeader() {
  return (
    <header className="rx-card">
      <VerifiedTag />
      <h2>CloseTag React Studio</h2>
    </header>
  );
}

عندما يُعيد المكون عنصراً قصيراً في سطر واحد، يمكنك كتابته بجوار كلمة return مباشرة. أما إذا امتدت عناصر JSX على عدة أسطر، فلا بد من إحاطتها بأقواس هلالية يبدأ قوسها المفتوح على نفس سطر return (.

إغفال هذه الأقواس وترك سطر return منفرداً يفعّل آلية الإدراج التلقائي للفاصلة المنقوطة (ASI) في محرك اللغة، فتتحول العبارة بصمت إلى return; وتُعيد القيمة undefined بدلاً من رسم عناصر الواجهة.

مخطط شجرة المكون الدالي يوضح المكون الأب DashboardPage يتفرع إلى HeaderBar وبطاقات TrackCard القابلة لإعادة الاستخدام

تتجلى القوة الهندسية للمكونات الدالية في التركيب وإعادة الاستخدام (Composition)؛ إذ تبني وحدات صغيرة متخصصة مثل StudioLogo وTrackSummary مرة واحدة، ثم تدرجها وتكررها بمرونة داخل مكون أب جامع مثل LearningPortal دون نسخ سطر تصميم واحد.

HTML
function TrackItem() {
  return <div className="rx-card">JSX Lesson</div>;
}

function LearningPortal() {
  return (
    <main className="rx-stack">
      <TrackItem />
      <TrackItem />
    </main>
  );
}

رغم أن المكون الأب يستدعي المكونات الأبناء داخل جملة return بشكل طبيعي، إياك أن تُعرّف دالة مكون داخل جسم دالة مكون آخر! فكتابة function ChildBadge() {} بداخل function ParentPanel() {} تنشئ دالة بعنوان ذاكرة جديد تماماً في كل مرة يُعاد فيها رسم الأب، مما يجبر React على هدم عناصر الابن في المتصفح وإعادة بنائها من الصفر وفقدان تركيز المؤشر.

القاعدة الذهبية الصارمة هي تعريف جميع دوال المكونات في المستوى الأعلى للملف.

HTML
function StatusPill() {
  return <span className="rx-badge">Top-Level</span>;
}

function ServerPanel() {
  return (
    <section className="rx-card">
      <StatusPill />
      <p>Stable identity on every render.</p>
    </section>
  );
}

متى تفصل جزءاً من الشاشة في مكون مستقل؟ طبّق مبدأ المسؤولية الواحدة (Single Responsibility Principle)؛ افصل القطعة في مكون خاص عندما تتكرر في أكثر من موضع مثل الأزرار والبطاقات والشارات، أو عندما يكبر قسم في الصفحة مثل شريط التنقل أو جدول الأسعار بحيث يصبح فصله أوضح للقراءة والصيانة، دون المبالغة بتغليف كل فقرة نصية مفردة. راجع المقارنة الهندسية التالية:

معيار المقارنةعنصر HTML المدمجالمكون الدالي في React
حالة الحرف الأول للوسميكتب بحروف صغيرة مثل <section> و<h2>يبدأ وجوباً بحرف كبير PascalCase مثل <CourseCard />
نطاق التعريف البرمجيمدمج مسبقاً في محرك المتصفح القياسييُعرَّف كدالة JavaScript في المستوى الأعلى للملف
إرجاع الأسطر المتعددةيُكتب مباشرة ضمن بنية العناصر المحيطةيُحاط بأقواس هلالية return ( ... ) لمنع فخ الفاصلة
الدور المعماري بالواجهةلبنة أولية خام في شجرة المستندوحدة واجهة متكاملة قابلة للتركيب وإعادة الاستخدام
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

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

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

بنيت في هذا الدرس أول مكون دالي قياسي في React، وطبقت قاعدة التسمية بحرف كبير PascalCase وإحاطة الأسطر المتعددة بالأقواس الهلالية، وركّبت المكونات المتداخلة مع الالتزام بتعريفها دائماً في المستوى الأعلى للملف. الخطوة التالية: انتقل الآن إلى الدرس رقم 6 «تصدير واستيراد المكونات في React» لمواصلة البناء التراكمي المتدرج في مسار React الحديث.

مشاركة

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

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

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

المصطلحات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Functional Component المكون الدالي
دالة JavaScript قياسية تبدأ بحرف كبير وتعيد صياغة JSX تصف وحدة واجهة قابلة لإعادة الاستخدام.
للمراجعة
02 PascalCase نمط PascalCase
أسلوب تسمية يبدأ فيه كل مقطع بحرف كبير دون فواصل مثل CourseCard، وهو إلزامي لتمييز مكونات React.
للمراجعة
03 Component Composition تركيب المكونات
بناء الشاشات المتكاملة عبر دمج وتداخل مكونات فرعية صغيرة متخصصة داخل مكون أب جامع.
للمراجعة
04 Top-Level Declaration التعريف بالمستوى الأعلى
كتابة دالة كل مكون في النطاق الجذري للملف خارج جسم أي مكون آخر للحفاظ على ثبات هويته وأدائه.
للمراجعة

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

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

الاختصارات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 JSX JSX
JavaScript XML
الامتداد النحوي الشبيه بـ HTML الذي تعيده دوال المكونات لوصف بنية الواجهة.
للمراجعة
02 ASI ASI
Automatic Semicolon Insertion
آلية المحلل اللغوي في JavaScript التي تدرج فاصلة منقوطة تلقائياً بعد كلمة return المنفردة في السطر.
للمراجعة
03 SRP SRP
Single Responsibility Principle
مبدأ هندسي ينص على أن يركز كل مكون على مسؤولية واحدة واضحة ليسهل اختباره وصيانته.
للمراجعة
04 DOM DOM
Document Object Model
شجرة عناصر الصفحة في المتصفح التي تحدثها React استناداً إلى مخرجات دوال المكونات.
للمراجعة

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

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

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

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

0/2مهام منجزة
  1. افتح المثال الأول في محرر التجريب وغيّر اسم الدالة ووسم العرض إلى StudioCard بصيغة PascalCase مع إضافة فقرة وصفية.

  2. افتح مثال التركيب في محرر التجريب وأضف استدعاءً ثالثاً للمكون TrackItem مع إبقاء تعريف جميع الدوال في المستوى الأعلى للملف.

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

مساحة التحدي

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

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

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

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

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

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

ما التعريف الدقيق للمكون الدالي في معيار React الحديث؟

المكون الدالي هو دالة JavaScript قياسية تعيد صياغة JSX تصف جزءاً من واجهة المستخدم.

02

لماذا يجب أن يبدأ اسم المكون في React بحرف كبير وفق نمط PascalCase؟

تعامل JSX الوسوم بالحروف الصغيرة كعناصر HTML مدمجة، بينما تعامل الأسماء بالحرف الكبير كدوال مكونات.

03

كتابة الوسم <courseCard /> بحرف أول صغير تستدعي الدالة courseCard() كمكون React بنجاح.

خطأ؛ فالبدء بحرف صغير يجعل React تعتبره وسم HTML غير معروف بدلاً من استدعاء دالة المكون.

04

ماذا يحدث إذا انتقلت إلى سطر جديد مباشرة بعد كلمة return دون فتح قوس هلالي؟

تدرج JavaScript فاصلة منقوطة تلقائياً فتعيد الدالة undefined بدلاً من عناصر JSX.

05

بمجرد تعريف المكون الدالي في المستوى الأعلى، يمكنك رسم عدة نسخ مستقلة منه داخل المكون الأب.

صواب؛ فإعادة استخدام المكون عدة مرات باستقلالية تامة هي جوهر معمارية المكونات في React.

06

لماذا يُحظر تماماً تعريف دالة مكون فرعي داخل جسم دالة مكون أب؟

لأن ذلك ينشئ مرجع دالة جديداً في كل تصيير فيجبر React على هدم عناصر الابن وإعادة بنائها بالكامل.

07

أين يجب تعريف دوال المكونات داخل ملف الوحدة البرمجية؟

تُعرَّف جميع دوال المكونات دائماً في المستوى الأعلى الجذري للملف.

08

تصلح كل من صيغة تصريح الدالة القياسية والدالة السهمية المسندة إلى ثابت بصيغة PascalCase لبناء مكون دالي صحيح.

صواب؛ فكلتا الصيغتين تنشئان دالة JavaScript قياسية تستطيع React استدعاءها ورسم مخرجاتها.

09

ما المبدأ الهندسي الأنسب لتحديد متى نقسّم المكون الكبير إلى مكونات أصغر؟

يرشدنا مبدأ المسؤولية الواحدة لفصل الأجزاء المتكررة أو الأقسام المستقلة في مكونات واضحة الغرض.

10

أي عبارة إرجاع التالية تعيد عناصر JSX متعددة الأسطر بأمان تام؟

فتح القوس الهلالي على نفس سطر return يمنع الإدراج التلقائي للفاصلة المنقوطة.