首页 > 解决方案 > 在 redux 状态下通过 key-index 移除对象

问题描述

我在 redux 状态下拥有具有以下结构的groupsand对象:members

groups :{
    '1683': {
      id: 1683,    
      members: [
        '1',
        '2'
      ],
    },
    '1900': {...}
}

members: {
   '1': {
       name: 'user1'
    }, 
   '2': {
       name:'user2'
    }
}

我在减速器中有以下代码来从组中删除成员。members我更新内部错误的第一部分group工作正常。但是,我想从members对象本身中删除目标成员的代码不起作用。我试过splice但它不工作,因为members它不是一个数组。我想知道如何根据 key-id 匹配删除成员。有什么建议么?

    case REMOVE_STUDENT_SUCCESS:
        return {
            ...state,
            groups: {
                ...state.groups,
                [action.payload.groupId]: {
                    ...state.groups[action.payload.groupId],
                    members: state.groups[action.payload.groupId].members.filter(id => id !== action.payload.studentId)
                }
            },

            //NOT WORKING
            //members: state.members.splice(action.payload.studentId, 1)
        };

标签: reactjsreduxreact-redux

解决方案


我强烈推荐使用Immutability-helper库。它使修改不可变状态变得更加容易。

还有immer库也可以提供帮助。


推荐阅读