انتقل إلى محتوى الدرس

Immutability and Object.is مبدأ عدم التغيير ومقارنة المرجع

تعلّم لماذا يفشل التعديل المباشر لكائنات الحالة مع فحص Object.is في React، وكيف تنشئ نسخاً محدثة بمعامل الانتشار والمفاتيح المحسوبة والكائنات المتداخلة.
3 صفوف تعليمية
ReactJS
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تتميز النصوص والأرقام والقيم المنطقية في JavaScript بكونها قيماً أولية غير قابلة للتغيير، أما الكائنات (Objects) فهي مراجع قابلة للتعديل في مكانها، مما قد يغري المبرمج بكتابة cursor.x = 120 ثم setCursor(cursor). في React يجب معاملة أي كائن مخزن في الحالة بوصفه للقراءة فقط.

السبب الهندسي واضح: تفحص React تطابق الحالة السابقة والجديدة بالدالة Object.is()؛ فإذا عدلت نفس الكائن وأعدت تمرير مرجعه ذاته، تحسبها React غير متغيرة وتتجاهل إعادة رسم الشاشة تماماً.

الصف 2 كود برمجي
HTML
import { useState } from 'react';

function BadgeMover() {
  const [pos, setPos] = useState({ x: 0, y: 0 });
  const moveX = () =>
    setPos({ x: pos.x + 20, y: pos.y });
  return <button onClick={moveX}>X: {pos.x}px</button>;
}
الصف 3 ملاحظة هامة