我在Reactjs-Redux应用程序中使用此代码
switch (action.type) {
case SET_RISPOSTA:
const newState = {...state}
newState.verifica.domande[action.indexDomanda].risposte[action.indexRisposta].valore = action.valore
console.log(state.verifica.domande[0].risposte[0].valore) console.log(newState.verifica.domande[0].risposte[0].valore)
return newState
default:
return state
}
我希望控制台显示
undefined(未定义的值) 1(action.valore的值)
但是控制台显示
1 1
为什么即使我使用了{... state}?
,我的状态对象也会发生变异如果我把
的console.log(state.verifica.domande [0] .risposte [0] .valore)
前
const newState = {... state}
控制台显示
未定义 1
答案 0 :(得分:1)
因为const newState = {...state}
仅创建state
的新对象。它不会递归地创建新对象。这意味着在执行{...state}
之后,以下将是不同的
state !== newState // true
但是以下内容将保持不变
`newState.verifica` === `state.verifica` // true