الدرس 5 من 8
لا تعدّل، اصنع جديدًا
- 14 دقيقة
- 5 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
لماذا تُجمَّد البيانات
01
الشرح
حين تُعدّل مصفوفة في مكانها، يضيع ما كانت عليه. ومعه يضيع أبسط سؤال: ما الذي تغيّر؟ — وعليه يقوم التراجع والمقارنة وكشف التغيّر في كل مكتبة واجهات.
البديل أن كل تغيير يُنتج قيمة جديدة: [...list, item] بدل push، وlist.filter(x => x !== y) بدل splice، و{...obj, key: v} بدل الإسناد المباشر.
والمصفوفة هنا Object.freeze — فأي محاولة تعديل في الوضع الصارم ترمي خطأً بدل أن تنجح صامتة.
02
المطلوب
اجعل الإضافة والحذف يعملان بلا تعديل state.items، مع بقاء عدّاد التغييرات صحيحًا.
معايير التصحيح
5 معايير- القائمة تبدأ بثلاثة عناصر
- الإضافة تعمل بلا خطأ
- الحذف يزيل الأول
- المصفوفة الجديدة مرجع آخر لا المعدَّلة نفسها
- عدّاد التغييرات يتبع كل عملية