Javascript 我的删除操作工作不正常?
这是我的删除代码,它只在第一次调用时有效Javascript 我的删除操作工作不正常?,javascript,object,Javascript,Object,这是我的删除代码,它只在第一次调用时有效 const byId = (state = {}, action) => { switch (action.type) { case 'REMOVE_TODO': return Object.keys(state).filter( key => { return state[key].id !== action.id }).reduce((acc,key) => Object.
const byId = (state = {}, action) => {
switch (action.type) {
case 'REMOVE_TODO':
return Object.keys(state).filter( key => {
return state[key].id !== action.id
}).reduce((acc,key) => Object.defineProperty(acc, key, {
value: state[key], }),{});
default:
return state;
}
};
我的状态对象是这样的:
{"abcd1": {id: "abcd1", text: "hello world"}, "efgh2": {id: "efgh2", text: "hello there"}
所以发生的事情是,我可以在第一次调用时删除,然后当我再次尝试调用时,我的对象变成空的?或者只有{}。不知道为什么?我更喜欢将我的状态对象塑造为:
[{id: "abcd1", text: "hello world"},{id: "efgh2", text: "hello there"}]
因为重复对象键和todo id(如果它们相同)是多余的。
然后,在减速器中,您可以有如下内容:
const byId = (state = [], action) => {
switch (action.type) {
case 'REMOVE_TODO':
return state.filter((todo) => todo.id != action.id)
default:
return state;
};