Redux 在组合式低位减速机旁使用高位减速机

Redux 在组合式低位减速机旁使用高位减速机,redux,reducers,Redux,Reducers,我有一个react/redux应用程序,商店设置如下: interface AppState { substateA: SubstateA; substateB: SubstateB; } 和两个管理各自状态的减速器: const reducer = combineReducers<AppState>({ substateA: reducerA, substateb: reducerB, }); 我想做的是在这两个减速机之外添加一个管理整个状态的减速机。我

我有一个react/redux应用程序,商店设置如下:

interface AppState {
  substateA: SubstateA;
  substateB: SubstateB;
}
和两个管理各自状态的减速器:

const reducer = combineReducers<AppState>({
    substateA: reducerA,
    substateb: reducerB,
});

我想做的是在这两个减速机之外添加一个管理整个状态的减速机。我如何才能做到这一点,或者还有其他更好的解决方案吗?

reducer只是一个函数,它接受状态和动作,并返回一个新的状态对象

combinereducer返回一个reducer,该reducer只调用每个reducer的状态片

玩一玩这样的东西。。您可能希望它首先运行组合减速器,或者首先运行全局状态减速器,具体取决于您正在执行的操作

const combinedReducer = combineReducers<AppState>({
  substateA: reducerA,
  substateb: reducerB,
});

const reducer = (state, action) => {
  state = reducerC(state, action);
  return combinedReducer(state, action);
}

谢谢你的解决方案,两个减速机现在都被调用了,但我有一个不同的问题,这不是直接相关的。我正在将带有方法的类的实例保存到存储中,当调用方法时,它看起来指向了错误的对象。嗯,是的,不要这样做。只有普通的对象/数组/字符串应该放在商店里。你有什么其他的建议吗?我基本上在商店里保存了一堆唯一Id下的对象,这些对象都是从公共类派生的,并且都有自己的序列化方法。我希望能够序列化所有对象,它们创建一个树状结构,并通过存储中的Idsre非序列化项相互引用,虽然你已经发现了一个问题。组织嵌套数据。。基本上,您的目标应该是序列化和规范化数据,并构建一组选择器来从存储中提取所需的数据。在创建用于管理存储数据的缩减器时,将数据规范化会使事情变得更简单。但是,我应该将自定义序列化方法放在哪里呢?它们是否可以作为静态方法工作,接受存储区中的普通对象作为参数?然后,我将如何动态调度以更正派生类型的实现?所有类都具有唯一的字符串文本。