شرح صفوف ومحتوى الفقرة
أبسط دفاع قياسي يوصي به التوثيق الرسمي لمكتبة React ضد تضارب الردود هو استخدام راية منطقية محلية داخل useEffect(): نعرّف let ignore = false في مطلع التأثير، ونشترط if (!ignore) قبل أي تحديث للحالة، ثم نعيد دالة التنظيف () => { ignore = true; }.
نظراً لأن كل دورة تصيير تمتلك نطاقاً مغلقاً خاصاً بها (Closure)، فإن تغيير التصنيف يضبط راية الطلب القديم على true بينما يبدأ الطلب الجديد براية جديدة false، فتُهمل أي نتيجة متأخرة بأمان تام.
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]);