【发布时间】:2017-08-07 06:41:20
【问题描述】:
我觉得我的减速器应该可以工作,但它一直坚持说我正在改变状态。
未捕获的错误:在调度中检测到状态突变,路径为:
的 reduceroutput.outputList.0.composition。看看处理动作 {"type":"SET_OUTPUT_COMPOSITION",
几个小时前我发布了类似的内容,但没有答案,但我认为我的 redux 状态太复杂了。这是我的简化版本,但我仍然遇到变异错误..我做错了什么?我不应该在我的 redux 状态下使用一个类吗?我应该使用某种不可变库吗?请帮帮我。
我的初始 Redux 状态
output: {
outputList: [], //composed of Output class objects
position: 0
}
输出类
class Output {
constructor(output) {
this.id = output.id;
this.composition = output.getComposition();
this.outputObj = output;
this.name = output.name;
this.url = output.getUrl();
}
}
export default Output;
用于更新属性的减速器
case types.SET_OUTPUT_COMPOSITION: {
let outputListCopy = Object.assign([], [...state.outputList]);
outputListCopy[state.position].composition = action.composition;
return Object.assign({}, state, {outputList: outputListCopy});
动作
export function setOutputComposition(comp) {
return { type: types.SET_OUTPUT_COMPOSITION, composition: comp}
}
【问题讨论】:
-
你能包括你的行动
-
@DavidBradshaw 为你添加了动作
-
我在这里找到了我需要的答案stackoverflow.com/questions/35362460/…
标签: javascript reactjs ecmascript-6 redux react-redux