MASTRILOالدورة/متى ننقل المكون إلى ملف مستقل؟
MASTRILO

متى ننقل المكون إلى ملف مستقل؟

في الدرس السابق قسمنا Dashboard إلى مكونات لها أدوار واضحة:

text
Dashboard
├── DashboardHeader
├── ProgressSummary
└── CourseList

ما زالت كلها في index.jsx. إذا نقلنا CourseList إلى ملف آخر، هل يتغير مكانها في الواجهة؟

نقل الكود لا ينقل المكون في الواجهة

يعرض Dashboard القائمة بهذا السطر:

jsx
<CourseList />

يمكننا نقل دالة CourseList إلى ملف آخر ثم استيرادها. ما دام السطر أعلاه في مكانه، تبقى القائمة في مكانها من الصفحة.

ما علاقة الملفات ببعضها؟

سننقل DashboardHeader و CourseList إلى dashboard-parts.jsx و نبقي ProgressSummary و course في index.jsx. عندما يستورد index.jsx من الملف الجديد، تنشأ علاقة بين الملفين. نسمي كل ملف وحدة (module) و نسمي الرسم الذي يتتبع علاقات import شجرة اعتماد الملفات (module dependency tree).

هذه الشجرة تجيب عن سؤال: من أي ملف يأتي الكود؟ أما شجرة العرض (render tree) فتجيب عن سؤال آخر: أي المكونات يعرضها Dashboard؟

كيف نصدر المكونات و نستوردها؟

في dashboard-parts.jsx نكتب export قبل DashboardHeader و export default قبل CourseList:

jsx
export function DashboardHeader() {
  // ...
}
 
export default function CourseList() {
  // ...
}

عند الاستيراد نضع اسم DashboardHeader داخل الأقواس المعقوفة لأنه تصدير بالاسم. و نكتب CourseList خارجها لأنه تصدير افتراضي:

jsx
import CourseList, { DashboardHeader } from "./dashboard-parts";

هاتان طريقتان في JavaScript. لا تشترط React إحداهما و لا تشترط ملفا مستقلا لكل مكون.

جرب نقل المكونات

ستجد dashboard-parts.jsx فارغا في المحرر. هل سيتغير شكل الصفحة إذا نقلت المكونين و أبقيت استخدامهما داخل Dashboard كما هو؟ توقع الإجابة قبل التعديل.

انقل DashboardHeader و CourseList إلى dashboard-parts.jsx و استوردهما.

أبق ProgressSummary و course في index.jsx.

ارسم شجرة اعتماد الملفات و شجرة العرض.

ابدأ شجرة اعتماد الملفات من index.jsx و شجرة العرض من Dashboard. بعد أن ترسمهما قارن رسمك بالإجابة.

أظهر الشجرتين

شجرة اعتماد الملفات تتبع import:

text
index.jsx
└── dashboard-parts.jsx

أما شجرة العرض فتتبع المكونات التي يعرضها Dashboard:

text
Dashboard
├── DashboardHeader
├── ProgressSummary
└── CourseList

يظهر dashboard-parts.jsx مرة واحدة رغم أنه يحتوي مكونين. في شجرة العرض يظهر كل مكون في مكانه و لا تظهر أسماء الملفات.

هل يكفي الاستيراد لعرض المكون؟

احذف <CourseList /> مؤقتا من Dashboard و أبق استيراد CourseList. توقع أي الشجرتين ستتغير ثم افتح المعاينة.

أظهر نتيجة التجربة

تبقى علاقة الاستيراد بين الملفين. لذلك لا تتغير شجرة اعتمادهما. لكن شجرة العرض لا تضم CourseList الآن:

text
Dashboard
├── DashboardHeader
└── ProgressSummary

الاستيراد يجعل المكون متاحا للملف، لكنه لا يعرضه وحده.

أعد <CourseList /> إلى مكانه قبل تشغيل الاختبارات.

متى ننقل مكونا إلى ملف آخر؟

ننشئ مكونا عندما نريد اسما و مسؤولية واضحة لجزء من الواجهة. أما نقله إلى ملف آخر فهو قرار لتنظيم الكود عندما يصبح الملف أصعب في التصفح. ليس لكل مكون ملف مستقل بالضرورة.

في الدرس القادم سنمرر بيانات مختلفة إلى المكونات باستخدام Props بدلا من إنشاء مكون جديد لكل دورة.

اختبر معلوماتك

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

سجّل الدخول
اللوحات
نوع الخط
حجم الخط
أكملت 0 من 54 درس

React's UI Model

5.متى ننقل المكون إلى ملف مستقل؟

React 19 Foundations Through Practice554 متى ننقل المكون إلى ملف مستقل؟مكافأة إكمال الدرس إضافة إلى نقاط أنشطته. 10 XP. تُمنح المكافأة مرة واحدة فقط.