我的删除操作无法正常工作?

时间:2017-06-14 07:09:04

标签: 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.defineProperty(acc, key, {
        value: state[key], }),{});          
          default:
      return state;
  }
};

我的状态对象是这样的:

{"abcd1": {id: "abcd1", text: "hello world"}, "efgh2": {id: "efgh2", text: "hello there"}

所以会发生什么,我可以在第一次调用时删除,然后当我再次尝试调用时,我的对象变为空的?或仅{}。想不通为什么?

1 个答案:

答案 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;
};