خالد مرتضى نشر 27 نوفمبر 2021 أرسل تقرير نشر 27 نوفمبر 2021 عندما استخدم خطاف useContext لا يتم حدوث re-render ع الرغم من تغيير الcontext في الreact-devtools ودالة الreducer كالتالي const addItem = (item) => { items[item.id] = item; setItems(items); } 1 اقتباس
0 شرف الدين حفني نشر 27 نوفمبر 2021 أرسل تقرير نشر 27 نوفمبر 2021 يحدث ذلك غالبًا بسبب أنك تقوم بتعيين نفس الstate , فبالنسبة لreact فإن الstate مازال قيمتها تساوي items حتى وإن تم تغيير قيمة أحد عناصرها فإنها مازالت تشير إلى ذات المكان في الذاكرة, يمكنك التغلب على تلك المشكلة عبر تغيير الstate كما بالشكل التالي: const addItem = (item) => { items[item.id] = item; setItems({...items, item.id:item}); } بهذه الطريقة أنت لا تقوم بإرجاع نفس الstate بعد إضافة عنصر جديد, وإنما تقوم بنسخ عناصر الstate القديمة إلى state أخرى مع إضافة العنصر الجديد, فتتعرف react على أن الstate تم تغييرها وتشير إلى مكان أخر في الذاكرة فيتم تنفيذ الre-render اقتباس
0 Salah Eddin Beriani2 نشر 28 نوفمبر 2021 أرسل تقرير نشر 28 نوفمبر 2021 اذا كانت items هي ال state الخاص بذلك الجزء ففي react هذا يعد سئ جدا رغم انه في javascript طبيعي فطريقة تغييرك لل state items هنا items[item.id] = item; ستسبب مشاكل ولن تعمل معك و في حالتك الحل ببساطة سيكون ان تستخدم setItems فقط بهذه الطريقة const addItem = (item) => { setItems((prev)=>({...prev, [item.id]:item})); } يمكنك الاطلاع على هذا المقال فهو يوفر بعض المفاهيم القريبة للموضوع اقتباس
السؤال
خالد مرتضى
عندما استخدم خطاف useContext لا يتم حدوث re-render ع الرغم من تغيير الcontext في الreact-devtools
ودالة الreducer كالتالي
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.