我正在使用Redux,最近遇到了一個問題,那就是我要將消息添加到數組中,並且Redux狀態不是正在發出在React上重新渲染。我正在使用react-redux
庫。下面是我遇到的問題的一個例子:Spread運算符vs JSON.parse(JSON.stringify(...))用於不可變對象
// State structure
structure: { messages: {}, groups: {} }
// ---
newState = { ...prevState };
newState.messages[action.message.group] = action.message;
return newState;
這是更新狀態,但是它沒有觸發更新的反應成分,但是與newState = JSON.parse(JSON.stringify(prevState))
更換newState = { ...prevState }
解決了這個問題。
任何人都可以解釋爲什麼這發生在細節?我的印象是,傳播操作符創建了對象的克隆,直到現在我從來沒有遇到任何問題。
我想你應該使用這個「Object.assign」。沒有直接替換原點值,因爲我們一般不會改變狀態。 (http://redux.js.org/docs/basics/Reducers.html) – Wei
傳播運算符只是一個淺拷貝,而不是像序列化/反序列化方法那樣的深層拷貝。這可能會影響事情。 – ShadowRanger