所以我使用Normalizr来平坦我的状态,除了D部分之外,CRUD世界中的一切都很好 .
我读过人们只是将实体从状态中取消,使所有引用保持不变,但是许多松散的结尾似乎有些混乱 .
到目前为止,我正在使用以下内容删除其父级为 project
的 group
:
let project = cloneDeep(state.entities.projects[action.payload.project_id]);
remove(project.groups, (groupID) => {
return groupID == action.payload.id;
});
newEntityState = {
...state.entities,
}
newEntityState.projects[project.id] = project;
return {
...state,
entities: newEntityState
}
...这样,我不需要每次都检查 group
在我的选择器中是否为空,但 cloneDeep
以及我必须去寻找任何剩余参考的事实也会让人感到麻烦 .
有没有'正确'的方法来做到这一点,还是只是有点凌乱?