【发布时间】:2016-06-08 07:14:44
【问题描述】:
我遇到了这个疯狂的问题,我认为这更多地与纯 JS 而不是 redux 相关。
我的初始状态是这样的:
let data = {
outputs : ["0", "0", "0", "0"],
analogIn : "0"
}
这是我的减速器的一部分,所以当我尝试更改输出数组的值时(例如第三个值)
let newstate = Object.assign({}, state);
switch (action.type) {
case 'CLICK_OUTPUT':
let outputs = newstate.outputs
let status = outputs[action.num]
let newStatus = (status == "0") ? "1" : "0"
outputs[action.num] = newStatus
newstate.outputs = outputs
console.log(newstate.outputs[action.num]) <-- 1.
console.log(newstate.outputs) <-- 2.
console.log(newstate) <-- 3.
return newstate
default:
return state || data.data
}
- 返回正确的“1”
- 返回正确的 ["0", "0", "1", "0"]
-
返回
analogIn : "0", 输出:[“0”,“0”,“0”,“0”]
所以状态没有改变...
当我尝试更改模拟时,它可以工作
case 'CHANGE_IN':
newstate.analogIn = action.val
return newstate
任何想法为什么会发生这种情况? 和redux有关系吗?
【问题讨论】:
-
问题出在您更广泛的应用程序中,上面的 reducer 作为纯函数工作正常。 jsbin.com/wuqidefujo/edit?js,console,output
标签: javascript arrays reactjs redux