在Redux中克隆状态

时间:2017-08-29 20:03:42

标签: reactjs redux state

我在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

1 个答案:

答案 0 :(得分:1)

因为const newState = {...state}仅创建state的新对象。它不会递归地创建新对象。这意味着在执行{...state}之后,以下将是不同的

state !== newState // true

但是以下内容将保持不变

`newState.verifica` === `state.verifica` // true