У меня есть эта безумная проблема, которая, как мне кажется, больше связана с чистым JS, а не с сокращением.Редуктор редукции не меняет
Мое начальное состояние выглядит следующим образом:
и это часть моего редуктора так, когда я пытаюсь изменить значение массива выходов (например, третье значение)
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"]
поэтому состояние не изменилось ...
Когда я пытаюсь изменить analogIn он работает
case 'CHANGE_IN':
newstate.analogIn = action.val
return newstate
Любые идеи, почему это происходит? Это связано с сокращением?
Проблема заключается в вашем более широком применении, редуктор выше, поскольку чистая функция работает нормально. http://jsbin.com/wuqidefujo/edit?js,console,output – Lee