Итак, я забежал вперед и нормализовал все сущности в моих редукторах, что означает, что каждый редуктор имеет отдельный объект 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
, так какэто станет огромным беспорядком
У кого-нибудь есть какие-нибудь идеи здесь?