我有一个 ReactJS 应用程序,TypeScript
我redux
正在使用redux-toolkit
它来构建我的减速器。随着应用程序变得越来越大,我想开始重构我的减速器。
我的 redux 状态如下所示:
{
customers: Customers[],
orders: {
state1: SomeIndependentState1,
state2: SomeIndependentState2,
state3: SomeDependentState2,
state4: SomeDependentState3,
}
}
customers
和切片是独立的orders
,我可以轻松地为它们编写两个单独的减速器,然后将它们组合起来combineReducers
。
现在,我想进一步分解我的orders
减速器。
state1
并且state2
是完全独立的。state3
取决于来自 的数据state1
。state4
取决于来自state1
和的数据state2
。
有没有办法继续使用createReducer
from (或工具包中的一些其他功能)为切片中的redux-toolkit
每个嵌套切片orders
创建减速器?
当我开始重写我的 reducer 时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 状态的结构。我并不完全依赖于使用redux-toolkit
,但需要一个很好的理由让我的团队远离它。