reactjs - 在 redux 状态下通过 key-index 移除对象
问题描述
我在 redux 状态下拥有具有以下结构的groups
and对象: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)
};
解决方案
我强烈推荐使用Immutability-helper库。它使修改不可变状态变得更加容易。
还有immer库也可以提供帮助。