Действие, действующее на несколько магазинов
У меня есть действие, которое должно передавать данные как в собственном хранилище, так и в хранилище настроек. Мне это нужно, потому что добавленные данные отличаются и очищаются по-разному.
Мне интересно в таком случае, лучше ли использовать комбайновые редукторы? Или действие в нескольких магазинах является приемлемым решением?
import { PAGE_CHANGE_TITLE } from 'actions/types/page.types';
import { PROJECT_SELECTED } from 'actions/types/projects.types';
const initialState = {
pages: {
last: {},
current: {},
last5: [],
},
project: localStorage.getItem('project') || {},
};
export function configs(state = initialState, action) {
switch (action.type) {
case PAGE_CHANGE_TITLE:
const last5 = [...state.pages.last5];
last5.unshift(action.data);
if (last5.length > 5) {
last5.pop();
}
return {
...state,
pages: {
last: {
...state.pages.current,
},
current: {
...action.data,
},
last5: last5,
},
};
case PROJECT_SELECTED:
return {
...state,
project: {
...action.data,
},
};
default:
return state;
}
}
1 ответ
Используйте редукторный состав, будь то с combineReducers()
или какой-то ручной подход. Очень часто разные редукторы выполняют одно и то же действие.
В Redux мы почти никогда не предлагаем вам использовать несколько магазинов.