Normalizr - где бы я изменил сущность? - PullRequest
0 голосов
/ 12 июня 2018

Итак, я забежал вперед и нормализовал все сущности в моих редукторах, что означает, что каждый редуктор имеет отдельный объект entities.Теперь я понимаю, что для одного редуктора имеет больше смысла иметь в нем всех сущностей, а затем просто хранить идентификаторы (например, currentUser или что-то еще) в отдельных редукторах.

Этот подход имеет полное значение для объединения сущностей из ответа 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 голосов
/ 12 июня 2018

Несколько мыслей:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...