Normalizr - 我在哪里修改实体?

时间:2018-06-12 07:23:14

标签: reactjs redux react-redux normalizr

所以我向前跑并规范化Reducer中的所有实体,这意味着每个reducer都有一个单独的entities对象。我现在意识到一个 reducer在其中包含所有实体更有意义,然后只将ID(例如currentUser或其他东西)存储在单独的reducer中。

这种方法对于从API响应中合并实体非常有意义,但我无法弄清楚我是如何更改任何实体的。

例如,我会在哪里进行这样的操作?

    case SUBSCRIBER_TOGGLED: {
        let projectSubscriberIDs = cloneDeep(action.payload.project.subscriberIDs);

        let indexIfExists = projectSubscriberIDs.indexOf(action.payload.user.id);

        if(indexIfExists != -1){
            projectSubscriberIDs.splice(indexIfExists, 1);
        }else{
            projectSubscriberIDs.push(action.payload.user.id);
        }

        return {
            ...state,
            entities: {
                ...state.entities,
                projects: {
                    ...state.entities.projects,
                    [action.payload.project.id]: {
                        ...action.payload.project,
                        subscriberIDs: projectSubscriberIDs
                    }
                }
            }
        }
    }
  • 我们无法在行动中提前解决这个问题,因为行动无法了解州内情况
  • 我们无法在不包含相关实体的减速机中执行此操作,因为减速机无法访问其他减速机
  • entities减速机中完成所有这些操作感觉不对,因为它会变得非常混乱

有人有任何见解吗?

1 个答案:

答案 0 :(得分:1)

一些想法: