Cleanup Function تنظيف الآثار الجانبية
آخر تحديث: 2026-11-03
Cleanup Function تنظيف الآثار الجانبية
دالة التنظيف هي التفكيك الذي يعيده الأثر: تعمل مرة قبل التشغيل التالي لنفس الأثر، ومرة أخرى عند إزالة المكوّن، وهي ما يلغي المؤقّتات ويلغي اشتراك المستمعين ويوقف الطلبات الجارية. وبدون تنظيف يظلّ الأثر الجانبي يعمل بعد اختفاء المكوّن ويتسرّب. والقاعدة بسيطة: كل ما تبدأه داخل أثر ولا تنهيه بشكل متزامن يحتاج دالة تنظيف مقابلة.
| المجموعة | الآثار الجانبية والأداء |
|---|---|
| النوع | نمط |
ℹ️ ملاحظة يحوّل المحرّر JSX إلى JavaScript ويعرض الواجهة الحقيقية داخل بيئة معزولة؛ تُركَّب المكوّنات تلقائياً دون استدعاء render يدوي.
📝 الصيغة
useEffect(() => {
const id = setInterval(tick, 1000)
window.addEventListener('resize', onResize)
return () => { // التفكيك: أفرغ القديم قبل تشغيل الجديد
clearInterval(id)
window.removeEventListener('resize', onResize)
}
}, [])
القيمة المرجعة:لا قيمة معادة؛ فهذه المدخلات تصف نمط برمجة لا دالة.
▶ مثال
المثال يعمل مباشرة: يُعرض تلقائياً عند التوسيع وتظهر التعديلات فوراً.
الناتج:
يزيد المؤقّت ثانية كل ثانية؛ والضغط على «Pause» يوقفه فوراً (فتعمل دالة التنظيف)، والضغط على «Resume» يشغّله من جديد،وفي كل لحظة لا يوجد سوى مؤقّت واحد حيّ.
💡 النقاط الأساسية
⚠️ تحذير حين تتغيّر الاعتماديات، يشغّل React التنظيف السابق قبل تشغيل الأثر الجديد — ودون فهم ذلك لن تستطيع تفسير خلل «المؤقّت يعمل أسرع وأسرع».
💡 نصيحة ينبغي أن تملك setInterval و addEventListener واشتراكات الأحداث والطلبات غير المكتملة دالة تنظيف.
ℹ️ ملاحظة «نظّف القديم أولاً ثم أنشئ الجديد» يضمن بقاء نسخة واحدة فقط من الأثر الجانبي حيّة في أي وقت.
🏷️ المزيد من الآثار والأداء
💡 حالات ذات صلة
المزيد من الحالات قريباً.
📚 دروس ذات صلة
❓ الأسئلة الشائعة
س هل يجب على كل أثر أن يعيد دالة تنظيف؟
ج لا. يمكن لأثر لا يملك ما يفكّكه (تسجيل نقي مثلاً) أن يتخطّاها؛ لكنها إلزامية مع المؤقّتات والاشتراكات والطلبات.
س هل يعمل التنظيف عند تغيّر الاعتماديات؟
ج نعم. في كل مرة يُعاد فيها تشغيل الأثر يعمل التنظيف السابق أولاً؛ ويعمل التنظيف الأخير عند إزالة المكوّن.
س هل تقرأ دالة التنظيف الحالة الجديدة أم القديمة؟
ج الحالة القديمة — فدالة التنظيف تغلق على العرض الذي أنشأها، وهو بالضبط ما يلزم لإلغاء الأثر الجانبي القديم.