الهروب من الفخ: إصلاح الـ Stale Closures في React Hooks

تتسبب الـ Stale Closures في فقدان البيانات بصمت في React.

تقوم ببناء لوحة تحكم (dashboard) مع مؤقت يعمل في الخلفية. تستخدم setInterval داخل useEffect hook لحفظ البيانات تلقائيًا كل 5 ثوانٍ.

تحدث المشكلة عندما يتم تشغيل المؤقت (interval). حيث يقوم بحفظ مستند فارغ حتى لو كتب المستخدم صفحة كاملة. يظل المؤقت عالقًا في الماضي، مستخدمًا نسخة قديمة من الـ state الخاص بك.

المشكلة

عندما يتم تشغيل useEffect فإنه يلتقط المتغيرات الموجودة في نطاقه (scope).

الحل: نمط الـ Mutable Ref

يجب عليك فصل المؤقت عن البيانات. استخدم useRef hook للاحتفاظ بمرجع ثابت (constant reference) لآخر حالة (state) لديك. هذا يتجنب إعادة الرندرة (re-renders) ويحافظ على استقرار المؤقت.

كيفية التنفيذ:

تضمن هذه الطريقة أن مهام الخلفية تستخدم دائمًا بيانات حديثة، مما يحافظ على سرعة واجهة المستخدم (UI) وسلامة بياناتك.

المصدر: https://dev.to/iprajapatiparesh/escaping-the-trap-fixing-stale-closures-in-react-hooks-4gg7