Immutability
不可變性
01你是不是遇到這個 / THE SYMPTOM
我直接改了陣列或物件裡的值(push、改某個欄位),但畫面完全沒更新,或是某個我以為沒動的地方莫名其妙跟著變了。
↑ 如果你點頭了,你要的關鍵字就是 Immutability。
02這是什麼 / DEFINITION
更新資料時不直接修改原本的物件/陣列,而是產生一份改過的新副本來取代它,原本那份保持不動。
03什麼時候用 / WHEN TO USE
在 React/Vue 等靠「參照有沒有換」來判斷要不要重渲染的框架裡更新 state,或想避免某處改了資料連帶影響到共用同一個物件的其他地方時。
04怎麼跟 AI 說 / HOW TO ASK
直接複製這句、貼進 Claude Code / Cursor / Copilot / ChatGPT:
我這裡直接 mutate 了 state 導致畫面沒更新,幫我改成 immutable 的寫法,用展開運算子或 map 產生新陣列/新物件來 setState,不要原地修改。
05常見坑 / WATCH OUT
⚠ 最常見的坑:`arr.push()`、`obj.x = 1`、`arr.sort()` 都是原地修改、參照沒換,React 會以為沒變而不重渲染。要用 `[...arr, x]`、`{...obj, x:1}`、`[...arr].sort()`。淺拷貝只複製一層,巢狀深層仍可能共用參照。
06相關的詞 / RELATED