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

Functional Updates with Hooks تقليل الاعتماديات بدالة التحديث

احفظ نواتج الحسابات المكلفة وثبّت مراجع الكائنات الديناميكية بخطاف useMemo، وثبّت مراجع الدوال الممررة للمكونات المذكرة بخطاف useCallback وتعرّف على مترجم React الحديث.
3 صفوف تعليمية
ReactJS
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

انتبه لتفصيل شائع: إذا قرأت دالة الحدث مصفوفة الحالة مباشرة عبر كتابة setTasks([...tasks, next])، فستضطر لإدراج [tasks] في مصفوفة اعتماديات useCallback، مما يعيد إنشاء الدالة عند كل تعديل على المصفوفة!

أما عند استخدام دالة التحديث الوظيفية setTasks((prev) => [...prev, next])، فلا تعود الدالة بحاجة لقراءة المتغير الخارجي، وتفرغ مصفوفة الاعتماديات إلى [] فيبقى مرجع الدالة ثابتاً طوال عمر المكون:

الصف 2 كود برمجي
HTML
const toggleDone = useCallback((id) => {
  setItems((prev) =>
    prev.map((it) =>
      it.id === id ? { ...it, done: !it.done } : it
    )
  );
}, []); // Zero state dependencies!
الصف 3 ملاحظة هامة