这是我的删除代码,它只适用于第一次调用?
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"}
所以会发生什么,我可以在第一次调用时删除,然后当我再次尝试调用时,我的对象变为空的?或仅{}。想不通为什么?
答案 0 :(得分:0)
我更喜欢塑造我的状态对象,如:
[{id: "abcd1", text: "hello world"},{id: "efgh2", text: "hello there"}]
因为如果它们是相同的,重复对象键和todo id只是多余的。 然后,在reducer中你可以有类似的东西:
const byId = (state = [], action) => {
switch (action.type) {
case 'REMOVE_TODO':
return state.filter((todo) => todo.id != action.id)
default:
return state;
};