在我的应用程序中,我有以下代码。
case ADD_MOVEMENT:
let am_selectedTrainerMovements = state.selectedTrainerMovements;
state.trainerMovements.forEach(movement => {
if (movement.id === action.movement.id) {
am_selectedTrainerMovements.push(movement);
}
});
return {
...state,
selectedTrainerMovements: am_selectedTrainerMovements
};
break;
在减速机中,我使用这种情况。但是这给了我一个错误,说“不能在不可变数据结构上调用push方法”
我在这里做错了什么?
答案 0 :(得分:0)
您将am_selectedTrainerMovements设置为等于state.selectedTrainerMovements,因此您只需创建一个指向完全相同对象的新指针。因此,当您调用am_selectedTrainerMovements.push尝试更改不可变的状态时。
您需要克隆state.selectedTrainerMovements,例如:
let am_selectedTrainerMovements =
Object.assign({}, state. state.selectedTrainerMovements);