خطافات React المستخدمة يوميًا، مجمّعة حسب الوظيفة: حفظ الحالة، وتشغيل التأثيرات، وحفظ الحسابات في الذاكرة، ومشاركة السياق، والوصول إلى ما هو خارج التصيير. يربط كل صف الخطاف بالغرض منه.
الخطاف (hook) دالة تتيح لمكوّن دالي الاستفادة من ميزات React: الحالة، ودورة الحياة، والسياق، وضبط الأداء. القاعدتان: استدعِ الخطافات في المستوى الأعلى (أبدًا داخل الحلقات أو الشروط)، واستدعِها من دوال React فقط. ما تبقى هو اختيار الخطاف المناسب للمهمة.
جدول مرجعي · 24 إدخالات
خطافات ReactExplained
24 of 24 rows
الحالة
يحتفظ بقيمة واحدة تُطلق إعادة تصيير عند تغيّرها.
حالة محلية للمكوّن: حقول النماذج، ومفاتيح التبديل، والعدّادات.
يحتفظ بحالة تُدار عبر مُقلِّل إجراءات (reducer)، أشبه بمخزن صغير.
الحالة التي تضم عدة حقول مترابطة أو انتقالات معقّدة.
يحتفظ بقيمة قابلة للتغيير لا تُطلق إعادة تصيير.
الحاويات القابلة للتغيير، والمؤقّتات، والوصول المباشر إلى DOM عبر .current
التأثيرات
يشغّل أثرًا جانبيًا بعد التصيير، مع تنظيف اختياري.
جلب البيانات، والاشتراكات، والمزامنة مع نظام خارجي.
الدالة التي يُرجعها الأثر تعمل قبل الأثر التالي ومرة أخرى عند فك التركيب.
إلغاء الاشتراكات والمؤقّتات، أو إجهاض طلب جارٍ.
مثل useEffect، لكنه يعمل بشكل متزامن بعد تعديل DOM.
قراءة التخطيط أو كتابته قبل أن يرسم المتصفح (toasts وtooltips).
معالجات الأحداث تعمل استجابةً لفعل المستخدم؛ أما الآثار فتعمل بعد التصيير من أجل المزامنة.
المنطق الذي يسبّبه المستخدم مكانه المعالج، والمنطق الذي يسبّبه التصيير مكانه الأثر.
في وضع التطوير يركّب المكوّنات مرتين حتى تعمل الآثار ثم تُنظَّف ثم تعمل مجددًا.
كشف الاشتراكات المزدوجة والتنظيف المفقود قبل الإنتاج.
الأداء
يخزّن قيمة محسوبة في الذاكرة حتى تتغيّر تبعياتها.
تجنّب إعادة الحسابات المكلفة بين عمليات التصيير؛ غيّر قيمة في التبعيات عمدًا لإبطال الذاكرة.
يخزّن مرجع دالة في الذاكرة حتى تتغيّر تبعياتها.
استدعاءات ثابتة تُمرَّر إلى أبناء مخزَّنين في الذاكرة أو تُستخدم كتبعيات.
يتخطى إعادة تصيير مكوّن لم تتغيّر خصائصه (props).
المكوّنات الأبناء الثقيلة؛ مرّر دالة مقارنة كوسيطة ثانية حين لا تكفي المساواة السطحية (هو HOC وليس خطافًا).
السياق والمقابض الخارجية
يقرأ قيمة سياق دون تمرير الخصائص عبر الطبقات (prop drilling).
السمة، أو اللغة، أو مستخدم مصادقة مشترك عبر الشجرة كلها.
يخصّص الكائن الذي يراه الأب من خلال مرجع (ref).
كشف واجهة API محدودة من ابن عبر forwardRef.
التزامن وأخرى
يعلّم تحديث الحالة بوصفه غير عاجل كي تبقى الواجهة متجاوبة.
إبقاء حقل الإدخال سريع الاستجابة بينما تُعاد قائمة ثقيلة التصيير.
يؤجّل قيمة كي تصبح التحديثات قابلة للمقاطعة.
تقليل وتيرة التصييرات المكلفة (debounce) دون مؤقّتات.
يولّد معرّفًا فريدًا ثابتًا لسمات إمكانية الوصول.
ربط label بحقل الإدخال بين تصيير الخادم والعميل.
يقرأ وعدًا (promise) أو سياقًا أثناء التصيير؛ وهو الخطاف الوحيد الذي يمكن استدعاؤه شرطيًا.
فك وعد مع Suspense، أو قراءة سياق داخل إرجاع مبكر.
يحتفظ بحالة تُدار عبر إجراء نموذج، مع علم انتظار (pending) مضمّن.
إرسالات النماذج التي تُرجع أخطاء أو حالة محدّثة لعرضها في مكانها.
يصيّر قيمة متفائلة في الحال، ثم يعود إلى الحالة الحقيقية عند اكتمال الإجراء.
إظهار إعجاب أو رسالة مُرسلة بينما طلبها إلى الخادم قيد التنفيذ.
يقرأ حالة الانتظار لعنصر <form> المحيط، دون الحاجة إلى خصائص.
زر إرسال يعطّل نفسه بينما يُرسل النموذج الأب.
يشترك في مخزن خارج React ويقرأ لقطة واحدة متسقة.
واجهات المتصفح مثل حالة الاتصال، أو مخازن الحالة من طرف ثالث.
يعمل قبل تأثيرات التخطيط، وصُمم لحقن قواعد CSS-in-JS.
مكتبات الأنماط التي يجب أن تُدخل القواعد قبل قراءة التخطيط.
يعرض تسمية مخصّصة للحالة الداخلية للخطاف في React DevTools.
وسم ما يحتفظ به خطاف مخصّص أثناء تصحيح الأخطاء.
خطافك الخاص الذي يركّب الخطافات المدمجة لمشاركة المنطق.
سلوك ذو حالة قابل لإعادة الاستخدام مثل useFetch أو useMediaQuery.