小编典典

从Redux状态删除项目

reactjs

我想知道您是否可以在可能的情况下帮助我。我正在尝试从Redux状态删除一个项目。我已经将用户单击通过的项目的ID传递action.data到化简器中。

我想知道如何action.data在Redux状态下将ID与ID之一匹配,然后从数组中删除该对象?我还想知道删除单个对象后再设置新状态的最佳方法吗?

请参见下面的代码:

export const commentList = (state, action) => {
  switch (action.type) {
    case 'ADD_COMMENT':
      let newComment = { comment: action.data, id: +new Date };
      return state.concat([newComment]);
    case 'DELETE_COMMENT':
      let commentId = action.data;

    default:
      return state || [];
  }
}

阅读 280

收藏
2020-07-22

共1个答案

小编典典

只需过滤评论:

case 'DELETE_COMMENT':
  const commentId = action.data;
  return state.filter(comment => comment.id !== commentId);

这样,您将不会更改原始state数组,但会返回不包含具有id的元素的新数组commentId

为了更简洁:

case 'DELETE_COMMENT':
  return state.filter(({ id }) => id !== action.data);
2020-07-22