所以我使用Normalizr来平坦我的状态,除了D部分之外,CRUD世界中的一切都很好 .

我读过人们只是将实体从状态中取消,使所有引用保持不变,但是许多松散的结尾似乎有些混乱 .

到目前为止,我正在使用以下内容删除其父级为 projectgroup

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 以及我必须去寻找任何剩余参考的事实也会让人感到麻烦 .

有没有'正确'的方法来做到这一点,还是只是有点凌乱?