我有一个状态数组,我想从中删除一个对象。例如,我有:
[
{
name:'bench',
weight: 200
},
{
name:'squat',
weight: 300
},
]
如果用户愿意,我想让他们选择删除练习,但我不知道如何。 这是我的减速器:
const initialState = [];
const movementReducer = (state = initialState, action) => {
switch (action.type) {
case ADD_MOVEMENT:
return [
...state, action.payload
];
case UPDATE_MOVEMENT:
return [
...state.map(item => item.movementName === action.payload.movementName ? action.payload : item )
];
case DELETE_MOVEMENT:
return [
state.filter(item => item.movementName === action.payload.movementName ? "true" : "false" )
];
default:
return state;
}
};
export default movementReducer;
使用我现在拥有的代码,页面上没有返回任何内容,但我仍然可以在我的 redux devtools 中看到我的状态,这意味着它仍然存在。有什么帮助吗?
答案 0 :(得分:1)
在过滤器中,您从比较中返回 "true"
或 "false"
,但是这两个值都是真值:例如Boolean("false") === true
。
将您的运动减速器更改为:
const movementReducer = (state = initialState, action) => {
switch (action.type) {
case ADD_MOVEMENT:
return [
...state, action.payload
];
case UPDATE_MOVEMENT:
return [
...state.map(item => item.movementName === action.payload.movementName ? action.payload : item )
];
case DELETE_MOVEMENT:
return [
...state.filter(item => item.movementName === action.payload.movementName)
];
default:
return state;
}
};
我简化了过滤器函数,因为三元是多余的。
请注意,此函数正在比较 movementName
道具,因为这是原始代码所具有的,但您为这些项目提供的代码示例使用 name
作为道具。我不确定哪个是正确的,但请确保它们匹配 ?