1. مبتدئ

    ما هي قواعد الـ Hooks (Rules of Hooks) ولماذا يفرضها ريأكت بصرامة؟

    القاعدتان هما: استدعاء الـ Hooks فقط في المستوى الأعلى للدالة (Top Level)، واستدعاؤها فقط من داخل دوال مكونات ريأكت أو Custom Hooks، لضمان استقرار ترتيب المصفوفة الداخلية للحالات.

    اقرأ الشرح الكامل
  2. مبتدئ

    ما الفرق بين تمرير قيمة مباشرة لدالة setState وتمرير دالة تحديث وظيفية (Updater Function)؟

    تمرير دالة تحديث (Functional Updater) يضمن قراءة أحدث حالة متوفرة في الطابور وحساب القيمة الجديدة بناءً عليها حتى مع وجود تحديثات مجمعة متعددة أو إغلاقات قديمة (Stale Closures).

    اقرأ الشرح الكامل
  3. متوسط

    ما هي دورة حياة الـ useEffect وكيف تعمل دالة التنظيف (Cleanup Function)؟

    دالة الـ Cleanup تنفذ قبل كل تشغيل جديد للـ Effect وعند إزالة المكون من الـ DOM (Unmount)، ووظيفتها إلغاء الاشتراكات والاتصالات ومسح الـ Timers لتجنب تسريب الذاكرة.

    اقرأ الشرح الكامل
  4. متقدم

    ما هي مشكلة الـ Stale Closures مع useEffect و useCallback وكيف نتغلب عليها؟

    تحدث عندما تلتقط الدالة متغيراً من الـ Scope الخارجي وقت إنشائها وتظل تحتفظ بقيمته القديمة حتى بعد تحديثه في دورات الـ render اللاحقة بسبب غيابه عن مصفوفة التبعيات (Dependency Array).

    اقرأ الشرح الكامل
  5. مبتدئ

    متى يجب استخدام useRef وما الفارق الجوهري بينه وبين useState؟

    يستخدم useRef لتخزين قيم قابلة للتعديل تدوم طوال عمر المكون دون التسبب في إعادة التصيير (Re-render) عند تعديلها، وكذلك للوصول المباشر لعقد الـ DOM.

    اقرأ الشرح الكامل
  6. متوسط

    ما الفرق بين useMemo و useCallback ومتى يكون استخدامهما ضاراً بالأداء؟

    دالة useMemo تحفظ نتيجة عملية حسابية معقدة، بينما useCallback تحفظ هوية دالة ممررة بين عمليات الـ Render لتفادي إعادة تصيير المكونات المحسنة بـ React.memo؛ استخدامهما للعمليات البسيطة يضيف عبء ذاكرة ومقارنة لا داعي له.

    اقرأ الشرح الكامل
  7. متوسط

    ما هو useReducer ومتى يفضل اختياره كبديل لـ useState؟

    هو hook لإدارة الحالات المعقدة التي تتضمن انتقالات حالات متعددة أو عندما تعتمد الحالة التالية على خطوات متفرقة، حيث يفصل منطق تعديل الحالة في دالة Reducer نقية ومستقلة.

    اقرأ الشرح الكامل
  8. متقدم

    ما الفرق بين useEffect و useLayoutEffect وتوقيت تنفيذهما بالنسبة لرسم الشاشة؟

    دالة useLayoutEffect تعمل بشكل متزامن بعد تعديل الـ DOM وقبل أن يقوم المتصفح برسم الشاشة (Paint)، بينما useEffect تعمل بشكل غير متزامن بعد انتهاء رسم الشاشة.

    اقرأ الشرح الكامل
  9. متوسط

    ما هو useContext وكيف تتصرف المكونات المشتركة عند تحديث قيمة الـ Context Provider؟

    هو hook يتيح للمكونات قراءة البيانات من Provider أعلى الشجرة مباشرة دون Prop Drilling؛ وعندما تتغير قيمة الـ Provider يعاد تصيير كافة المكونات المستهلكة له تلقائياً.

    اقرأ الشرح الكامل
  10. متقدم

    ما هو useImperativeHandle وكيف نستخدمه مع forwardRef للتحكم في واجهة المكون الابن؟

    يستخدم useImperativeHandle لتخصيص الخصائص والدوال التي يتم كشفها للمكون الأب عبر الـ Ref، بدلاً من تعريضه لكامل عقدة الـ DOM الداخلية.

    اقرأ الشرح الكامل