Я расширяю функциональность локального приложения React для подключения к API.Вот мой код перед рефакторингом.Вы увидите, что я устанавливаю начальное состояние из глобальной переменной окна, INIT_STATE, которая также включает некоторые другие объекты корневого уровня.
Я сосредоточусь на одном из этих объектов корневого уровня, который называется "projects ".
Для редуктора проектов я нормализировал (используя normalizr) состояние, подобное этому, и комбинировал редукторы, чтобы использовать редукторы для нормализованных сущностей:
window.PROJECTS_STATE = fromJS(normalize(window.INIT_STATE.projects, projectsSchema));
const result = (state = window.PROJECT_STATE.get('result'), action) => {
switch (action.type) {
default:
return state;
}
};
// In these reducers, currently, I'm getting init_state from window.PROJECTS_STATE
// i.e. window.PROJECT_STATE.entities.projects), which has been normalized above
const entities = combineReducers({
projects,
items,
events,
});
// Here is where I'd like to handle an action to normalize and
// overwrite the state of `projects` and all it's sub-reducers
export default () => combineReducers({
entities,
result,
});
В моем рефакторе Iотправил действия для получения и получения запросов API в моем контейнере верхнего уровня.Я могу легко установить свое начальное состояние других объектов корневого уровня из того, что было в INIT_STATE, обработав действие GET_REQUEST_SUCCESS
в этих редукторах, чтобы вернуть эту часть ответа, но так как projects
нормализовано и имеет вложенный элемент sub.-reducers, я не уверен, как справиться с установкой этого состояния с помощью CombReducers.
Итак, в конечном счете, я хочу иметь возможность комбинировать редукторы, одновременно обрабатывая действие, которое может перезаписать состояние всех его субредукторов.Возможно ли это или есть лучший способ подойти к этому вопросу?
Большое спасибо.