У меня есть приложение ReactJS в TypeScript
с redux
, и я использую redux-toolkit
для создания своих редукторов. Поскольку приложение стало больше, я хочу начать рефакторинг своих редукторов.
Мое состояние редукса выглядит следующим образом:
{
customers: Customers[],
orders: {
state1: SomeIndependentState1,
state2: SomeIndependentState2,
state3: SomeDependentState2,
state4: SomeDependentState3,
}
}
Срезы customers
и orders
независимы и Я могу легко написать для них два отдельных редуктора, объединив их с combineReducers
позже.
Теперь я хочу еще больше сломать свой редуктор orders
.
state1
и state2
полностью независимы. state3
зависит от данных state1
. state4
зависит от данных state1
и state2
.
Есть ли способ продолжать использовать createReducer
из redux-toolkit
(или некоторые другие функции из набора инструментов) для создания редукторов для каждого вложенного среза в пределах orders
среза?
Как я начал переписывать мой редуктор для orders
, вот что у меня есть:
export const ordersReducer = (state: Orders, action: AnyAction) => {
return {
state1: state1Reducer(state?.state1, action),
state2: state2Reducer(state?.state2, action),
state3: {}, // not sure how to write a reducer for this slice and satisfy its dependency on state1
state4: {}, // not sure how to write a reducer for this slice and staisfy its dependency on state1 and state2
}
};
const initialState1: State1 = {};
export const state1Reducer = createReducer(initialState1, (builder) =>
builder
.addCase(...)
.addCase(...)
);
const initialState2: State2 = {};
export const state2Reducer = createReducer(initialState2, (builder) =>
builder
.addCase(...)
.addCase(...)
);
Примечание: я не контролирую структуру моего состояния редукции. Я не полностью привязан к использованию redux-toolkit
, но мне нужно хорошее обоснование, чтобы моя команда отошла от него.