Redux-减速器的不变状态变化是什么?

时间:2019-06-29 17:27:04

标签: reactjs redux

更改减速器状态的两个功能:

function1 (state, newValue) {
    const newValue1 = newValue + 1;
    const newValue2 = newValue * 7;
    return {...state, newValue2}
}

function2 (state, newValue) {
    let newValue1 = newValue + 1;
    newValue1 = newValue1 * 7;
    return {...state, newValue1}
}

哪个是正确的?仅状态必须是不可变的还是任何变量?

2 个答案:

答案 0 :(得分:1)

两个都是正确的。如您所说,只有状态必须是不变的。就您而言,根本不要以任何方式突变state变量。

答案 1 :(得分:0)

不可变状态对象背后的想法是,您不直接更改state。因此,这样做是错误的:

let state = {...}
function changeState(newValue) {
  state.newValue = newValue
}

我不知道您代码的其余部分是对还是错,但是在您提供的示例中,您并没有在改变状态-您将返回一个新对象,该对象将从原状态中获取所有内容(使用...state破坏状态),并在新返回的对象中添加或覆盖newValue

关于更改newValue(或其他变量)是否错误,同样,您的两个实例都可以。完美地发现了在简化器中使用,更改和运行逻辑,最终为更新后的状态提出了一个新对象(或其他任何对象)。