اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

يحدث ذلك غالبًا بسبب أنك تقوم بتعيين نفس ال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
نشر

اذا كانت items هي ال state الخاص بذلك الجزء ففي react هذا يعد سئ جدا رغم انه في javascript طبيعي فطريقة تغييرك لل state items هنا

    items[item.id] = item;

ستسبب مشاكل ولن تعمل معك و في حالتك الحل ببساطة سيكون ان تستخدم setItems فقط بهذه الطريقة 

const addItem = (item) => {
    setItems((prev)=>({...prev, [item.id]:item}));
  }

يمكنك الاطلاع على هذا المقال فهو يوفر بعض المفاهيم القريبة للموضوع

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...