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

Boolean ignore Cleanup Pattern نمط راية التجاهل ignore بالتنظيف

احمِ واجهة React من تضارب ردود الشبكة المتأخرة باستخدام راية التجاهل في دالة التنظيف وأداة AbortController القياسية وفصل خطأ الإلغاء المقصود وتهدئة البحث.
3 صفوف تعليمية
ReactJS
0 مشاهدة

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

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

أبسط دفاع قياسي يوصي به التوثيق الرسمي لمكتبة React ضد تضارب الردود هو استخدام راية منطقية محلية داخل useEffect(): نعرّف let ignore = false في مطلع التأثير، ونشترط if (!ignore) قبل أي تحديث للحالة، ثم نعيد دالة التنظيف () => { ignore = true; }.

نظراً لأن كل دورة تصيير تمتلك نطاقاً مغلقاً خاصاً بها (Closure)، فإن تغيير التصنيف يضبط راية الطلب القديم على true بينما يبدأ الطلب الجديد براية جديدة false، فتُهمل أي نتيجة متأخرة بأمان تام.

الصف 2 كود برمجي
HTML
useEffect(() => {
  let ignore = false;
  async function load() {
    const url = `/api/courses?category=${cat}`;
    const res = await fetch(url);
    const data = await res.json();
    if (!ignore) setCourses(data);
  }
  load();
  return () => { ignore = true; };
}, [cat]);
الصف 3 معاينة حية