更改减速器状态的两个功能:
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}
}
哪个是正确的?仅状态必须是不可变的还是任何变量?
答案 0 :(得分:1)
两个都是正确的。如您所说,只有状态必须是不变的。就您而言,根本不要以任何方式突变state
变量。
答案 1 :(得分:0)
不可变状态对象背后的想法是,您不直接更改state
。因此,这样做是错误的:
let state = {...}
function changeState(newValue) {
state.newValue = newValue
}
我不知道您代码的其余部分是对还是错,但是在您提供的示例中,您并没有在改变状态-您将返回一个新对象,该对象将从原状态中获取所有内容(使用...state
破坏状态),并在新返回的对象中添加或覆盖newValue
。
关于更改newValue
(或其他变量)是否错误,同样,您的两个实例都可以。完美地发现了在简化器中使用,更改和运行逻辑,最终为更新后的状态提出了一个新对象(或其他任何对象)。