[英]react redux reducer not changin
我遇到了這個瘋狂的問題,我認為有關純JS而不是redux的更多信息。
我的初始狀態如下:
let data = {
outputs : ["0", "0", "0", "0"],
analogIn : "0"
}
這是我的reducer的一部分,所以當我嘗試更改輸出數組的值(例如第3個值)
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
}
返回
analogIn:“0”,輸出:[“0”,“0”,“0”,“0”]
所以國家沒有改變......
當我嘗試更改模擬時,它可以工作
case 'CHANGE_IN':
newstate.analogIn = action.val
return newstate
任何想法為什么會這樣? 它與redux有關嗎?
好的,找到了解決方案。
因為它似乎使用這個:
newstate.outputs = outputs
或這個:
newstate.outputs[num] = "1"
如果要將一個數組的內容復制到作為數組的對象的值,則不起作用
解決方案是克隆數組
newstate.outputs = outputs.slice(0)
我不確定這是因為es6還是純粹的JS而發生的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.