شرح صفوف ومحتوى الفقرة
تحمي راية ignore حالة المكون من التلوث، لكن المتصفح يظل مستمراً في تنزيل بقية حزمة الشبكة المهملة في الخلفية. لإلغاء اتصال الشبكة الفعلي ذاته، أنشئ كائن new AbortController() القياسي داخل useEffect()، ومرّر الإشارة { signal: controller.signal } ضمن خيارات fetch()، ثم استدعِ controller.abort() داخل دالة التنظيف.
يوفر الإلغاء الفعلي للطلبات الملغاة استهلاك البيانات ويحرر قنوات الاتصال في المتصفح فوراً، وهو أمر بالغ الأهمية في القوائم الكبيرة والبحث الفوري.
HTML
useEffect(() => {
const controller = new AbortController();
fetch(url, { signal: controller.signal })
.then((r) => r.json())
.then(setCourses)
.catch((e) => {
if (e.name !== 'AbortError') setStatus('error');
});
return () => controller.abort();
}, [url]);