在我的本机应用程序中,我有一个这样的场景。有一个数组,当我们提供这个数组时,同一个项目可以在数组中不止一次。
[运动一,运动二,运动三,运动二,运动二]
我想删除只有一个动作 - 两个,当在reducer中执行具有动作ID的移除功能的删除功能时。但是现在,当我多次删除数组中的项目时,它会删除与id相关的所有项目。即使它在数组中重复,我怎么能只删除一个项目?这是我的代码。
case REMOVE_MOVEMENT:
return {
...state,
selectedTrainerMovements: state.selectedTrainerMovements.filter(
movement => {
return movement.id !== action.movement.id;
// return state.selectedTrainerMovements.splice(
// state.selectedTrainerMovements.indexOf(movement)
// );
},
state.selectedTrainerMovements.indexOf(action.movement),
)
};
break;
答案 0 :(得分:1)
case REMOVE_MOVEMENT:
let removed = false;
return {
...state,
selectedTrainerMovements: state.selectedTrainerMovements.filter(
movement => {
if (!removed && movement.id === action.movement.id) {
removed = true;
return false;
}
return true;
}
)
};