如何从Reducer中的数组中删除特定对象

时间:2019-01-09 09:58:15

标签: reactjs react-redux

我有一个用于用户模块的简化程序,需要从用户数组中删除单个对象,但是同时,我需要保留所有这些旧记录

例如

下面是我的初始状态的虚拟数据

export const initialSettings = {
  timezone: '',
  category: '',
  users: [
    {
      userId: '1',
      name: 'ABC'
    },
    {
      userId: '2',
      name: 'ABCD'
    },
    {
      userId: '3',
      name: 'ABCDE'
    },
    {
      userId: '4',
      name: 'ABCDEF'
    },
  ]
};

在上面的const中,我有一些数组用户,其中包含作为单独对象的用户列表

我能够获取用户详细信息,并尝试像这样将特定对象删除到减速器中

switch (...) {
  case 'ADMIN_REMOVE_RX':
    const data = action.payload.data; 
    const userid = data && data.userid; 

    return {
      ...state,
      users: state.users.filter(item => 
        item.userid !== userid
      )
    };

  default:
    return state;
}

最后,我能够获得输出,但是当我尝试过滤用户的数组时,它不再起作用,如果出现问题,请纠正我

2 个答案:

答案 0 :(得分:0)

错误部分可能是

D

检查 data.userid 的数据类型,如果 data.userid 是字符串,则由于而无法获得预期的输出!== (严格比较运算符)。

答案 1 :(得分:0)

检查项目属性名称,对象是驼色的item.userId,但过滤器是小写的item.userid

state.users.filter(item => item.userId !== userid)