从Redux状态中删除项目

问题描述:

我想知道如果可以的话,是否可以帮助解决这个问题。我正试图从Redux状态中删除一个项目。我已将用户通过action.data点击的物品ID输入到减速器中。从Redux状态中删除项目

我想知道如何将action.data与其中一个ID在Redux状态中匹配,然后从阵列中删除该对象?我也想知道在单个对象被删除后设置新状态的最佳方法吗?

请参阅下面的代码:

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 || []; 
    } 
} 

只是过滤评论:

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

这样你就不会发生变异原state阵列,但没有元素返回一个新的数组,其编号为commentId

更简洁:

case 'DELETE_COMMENT': 
    return state.filter(({ id }) => id !== action.data); 
+0

我看到它使用的只是ID另一个例子,而不是你的答案({ID})。这里有什么不同? –

+0

@MattSaunders'({id})=> ...'是一个lambda表达式(用js术语表示的箭头函数),它破坏了它的参数。这意味着输入应该是一个对象,我们只关心它的'id'属性。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment –