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

نقطة التركيب والوضع الصارم وأدوات مطوري ReactReact Root Strict Mode and Developer Tools

ركّب تطبيق React الحديث عبر دالة createRoot، وافحص نقاء المكونات أثناء التطوير بغلاف StrictMode، واستخدم إضافة React Developer Tools لتشخيص الأخطاء بمهارة.
أقسام الدرس
6
الأمثلة
2
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
2
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

ينطلق كل تطبيق صفحة واحدة في React من عنصر حاوية فارغ وحيد داخل ملف index.html يُكتب قياسياً بصيغة <div id="root"></div>. وبمجرد أن تتركب React على هذه الحاوية تصبح المسؤولة الوحيدة عن إدارة كافة العناصر بداخلها، لذا يجب تجنب التعديل اليدوي لعناصرها بسكريبتات خارجية.

HTML
import { createRoot } from 'react-dom/client';

function App() {
  return <h1>Mounted Inside #root Container</h1>;
}

const container = document.getElementById('root');
const root = createRoot(container);
root.render(<App />);

بدءاً من الإصدار الثامن عشر فصاعداً، يتم تركيب التطبيق حصراً باستيراد الدالة createRoot من المسار الفرعي الصريح react-dom/client، ثم استدعاء root.render(<App />). وقد أُلغيت الطريقة القديمة التي كانت سائدة في الإصدارات السابقة لأن createRoot تفعّل محرك التصيير المتزامن الحديث وتجميع التحديثات التلقائي.

عندما تفتح ملف src/main.jsx في أي مشروع حديث ستجد المكون الجذري محاطاً بغلاف <StrictMode> المستورد من حزمة react. لا يضيف الوضع الصارم أي عنصر مرئي لشجرة المتصفح، بل يعمل كحارس جودة أثناء التطوير فقط ليفحص نقاء الدوال، ويكشف نسيان تنظيف المؤقتات، وينبهك مبكراً لأي واجهات برمجية متقادمة.

مسار التركيب من عنصر div#root في الصفحة مروراً بدالة createRoot وحتى تغليف App داخل StrictMode
HTML
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';

function App() {
  return <p>Guarded by React StrictMode in Dev</p>;
}

createRoot(document.getElementById('root')).render(
  <StrictMode>
    <App />
  </StrictMode>
);

يتفاجأ كثير من المبتدئين عند رؤية جملة طباعة console.log داخل دالة المكون تعمل مرتين متتاليتين أثناء التطوير المحلي. هذا السلوك مقصود وصحي تماماً! إذ يستدعي StrictMode دالة المكون مرتين في بيئة التطوير للتأكد من أنها دالة نقية تعيد نفس النتيجة دائماً؛ فلا تحذف غلاف StrictMode لإخفاء المشكلة، بل أصلح سبب التعديل غير النقي.

احرص منذ اليوم الأول على تثبيت إضافة React Developer Tools الرسمية لمتصفحات Chrome أو Edge أو Firefox. عند فتح نافذة أدوات المطور (F12) سيظهر تبويبان متخصصان لا غنى عنهما:

  • تبويب Components: يعرض شجرة المكونات المنطقية النظيفة ويتيح فحص الخصائص والحالات الحية لكل مكون في اللحظة نفسها.
  • تبويب Profiler: يسجل جلسات التفاعل ويقيس زمن تصيير كل مكون بالمللي ثانية لاكتشاف أي بطء بدقة.

عند وقوع أي خطأ نحوي أو برمجي أثناء التطوير، تعرض طبقة التنقيح في Vite اسم الملف ورقم السطر والعمود بدقة، وبمجرد حفظ التصحيح يختفي الخطأ تلقائياً عبر التحديث السريع. يلخص الجدول التالي أدوات التركيب والفحص:

الأداة أو الدالةمسار الاستيراد أو الموقعالوظيفة الهندسية
العنصر div#rootداخل ملف index.htmlالحاوية الفارغة التي تحتضن شجرة واجهة React
الدالة createRootالمسار react-dom/clientإنشاء جذر React 18 الحديث وعرض المكون الرئيسي
المكون StrictModeحزمة react الأساسيةفحص نقاء الدوال والتأثيرات في وضع التطوير فقط
أدوات React DevToolsإضافة المتصفح الرسميةفحص شجرة المكونات الحية وقياس أداء التصيير
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

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

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

أتقنت في هذا الدرس تركيب شجرة التطبيق داخل الحاوية #root عبر دالة createRoot الحديثة، وفهمت حكمة الاستدعاء المزدوج في StrictMode أثناء التطوير، وتعرفت على تبويبي Components وProfiler وتشخيص رسائل الأخطاء. الخطوة التالية: انتقل الآن إلى الدرس رقم 5 «بناء أول مكون دالي في React» لمواصلة البناء التراكمي المتدرج في مسار React الحديث.

مشاركة

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

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

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

المصطلحات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 createRoot دالة إنشاء الجذر createRoot
الدالة القياسية في React 18+ المستوردة من react-dom/client لربط حاوية DOM بشجرة المكونات.
للمراجعة
02 StrictMode الوضع الصارم StrictMode
مكون مدمج في React يفعّل فحوصات إضافية لنقاء الدوال والتنظيف في بيئة التطوير فقط.
للمراجعة
03 Host Container عنصر الحاوية المضيف
عنصر HTML الفعلي داخل الصفحة والذي تركّب React شجرة واجهتها بالكامل بداخله.
للمراجعة
04 Component Stack تسلسل استدعاء المكونات
سلسلة المكونات الآباء التي تطبعها React في رسائل الخطأ لتحديد مسار المكون المسبب للعطل.
للمراجعة

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

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

الاختصارات4

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

0 / 4 مفهومةأول بطاقة، أول خطوة
01 API API
Application Programming Interface
الدوال والمكونات البرمجية الرسمية التي تصدرها حزم React لاستخدام المطورين.
للمراجعة
02 DOM DOM
Document Object Model
شجرة عناصر المتصفح التي تستلم دالة createRoot إدارة عقدتها الجذرية.
للمراجعة
03 HMR HMR
Hot Module Replacement
التحديث اللحظي الذي يخفي شاشة الخطأ تلقائياً ويعرض التصحيح فور حفظ الملف.
للمراجعة
04 SPA SPA
Single-Page Application
تطبيق يتركب بالكامل داخل حاوية جذرية واحدة في مستند HTML.
للمراجعة

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

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

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

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

0/2مهام منجزة
  1. افتح مثال StrictMode في محرر التجريب وعدّل النص داخل المكون App وتأكد أن الغلاف لا يضيف أي عناصر زائدة للصفحة.

  2. تنقل بين التبويبات الثلاثة في المختبر لمراجعة صيغة createRoot ودور StrictMode وتبويبات الفحص.

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

مساحة التحدي

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

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

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

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

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

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

من أي مسار برمجي تُستورد دالة createRoot في إصدارات React الحديثة؟

تُستورد دالة createRoot قياسياً من المسار react-dom/client.

02

يضيف مكون <StrictMode> عنصر div مرئياً إضافياً حول تطبيقك في شجرة الصفحة.

خطأ؛ فلا ينتج StrictMode أي عنصر HTML مرئي في الصفحة إطلاقاً.

03

لماذا يستدعي مكون StrictMode دوال المكونات مرتين عمداً أثناء وضع التطوير؟

لكشف أي تعديلات خارجية غير نقية داخل دالة المكون مبكراً قبل وصولها للإنتاج.

04

تتوقف الفحوصات المزدوجة لمكون StrictMode تلقائياً في نسخة الإنتاج النهائية.

صواب؛ إذ يقتصر عمل StrictMode على بيئة التطوير فقط دون أي تكلفة في نسخة الإنتاج.

05

ما التبويبان اللذان تضيفهما إضافة React Developer Tools الرسمية إلى نافذة أدوات المطور؟

تضيف الأداة تبويبي Components لفحص الشجرة وProfiler لقياس الأداء.

06

ما دور العنصر <div id="root"></div> الموجود داخل ملف index.html؟

يعمل كحاوية مضيفة فارغة تركّب فيها دالة createRoot شجرة واجهة تطبيق React.

07

ما التصرف الهندسي الصحيح إذا كشف StrictMode سلوكاً خاطئاً عند استدعاء المكون مرتين؟

يجب إصلاح الكود غير النقي داخل المكون بدلاً من حذف غلاف StrictMode وإخفاء العلة.

08

بعد استلام createRoot لإدارة الحاوية #root، ينبغي تجنب حذف أو تعديل عناصرها الداخلية يدوياً بسكريبتات خارجية.

صواب؛ فالتدخل اليدوي المباشر في عقد تديرها React يربك عملية المطابقة ويسبب أخطاء عرض.

09

ما المعلومة الأولى التي تعرضها شاشة تشخيص الأخطاء عند وقوع خطأ نحوي أثناء التطوير؟

تبرز مسار الملف الدقيق ورقم السطر والعمود مع السطر البرمجي المسبب للخطأ.

10

ما دالة التركيب القديمة التي استُبدلت بدالة createRoot بدءاً من الإصدار الثامن عشر؟

حلّت دالة createRoot الحديثة محل الدالة القديمة المتقادمة ReactDOM.render.