Skip to content

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