我覺得我的減速器應該工作,但它一直堅持我在改變狀態。更新減速器中的對象屬性,無突變
Uncaught Error: A state mutation was detected inside a dispatch, in the path:
output.outputList.0.composition
. Take a look at the reducer(s) handling the action {"type":"SET_OUTPUT_COMPOSITION",
我幾個小時前發佈了類似的答案,但沒有答案,但我認爲我的redux狀態太複雜了。這是我的簡化版本,我仍然得到mutate錯誤..我做錯了什麼?我是否應該在我的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行動,你將ty – user1189352
我發現我需要這裏的答案http://stackoverflow.com/questions/35362460/replace-array-item-with-another-one-without- mutating-state – user1189352