通过索引从redux数组中删除项目

时间:2018-04-02 19:17:06

标签: arrays reactjs redux

我在react redux商店中存储了一个数组。这些项目包含title以及所有(无id字段)。

当我触发动作时,我尝试通过减速器用

更新我的商店
case REMOVE_NOTIFICATION: 
    return {
        ...state,
        notifications: state.notifications.filter(id => action.id !== id)
    }

action.id是正确的,但称这似乎没有做任何事情。我预计它将返回一个新的项目数组,其中action.id与传入的项目的ID不匹配。我是否正确地认为id实际上是数组项的索引?

2 个答案:

答案 0 :(得分:2)

否在过滤器功能中,第一个参数始终为值,第二个参数为索引/键

试试这个:)

case REMOVE_NOTIFICATION: 
    return {
        ...state,
        notifications: state.notifications.filter((obj,index) => {return action.id !== index})
    }

答案 1 :(得分:2)

  

我是否正确假设id实际上是数组项的索引?

没有。根据{{​​3}},您的 id 参数将是数组项(内容),而不是其索引。

您可以在过滤器功能的第二个参数上访问项目的索引:

case REMOVE_NOTIFICATION: 
return {
    ...state,
    notifications: state.notifications.filter((item, index) => action.id !== index)
}