Javascript 将reducer合并为另一个reducer中的键

Javascript 将reducer合并为另一个reducer中的键,javascript,redux,react-redux,Javascript,Redux,React Redux,我有一个reducerreducerA看起来像这样 reducerA = { A: [], B: {}, C: {}, D: [], }; reducerB = { E: {}, } reducerA = { A: [], B: {}, C: {}, D: [], reducerB: { E: {} }, }; 我有另一个减速机reducerB,看起来像这样 reducerA = { A: [], B: {}, C: {},

我有一个reducer
reducerA
看起来像这样

reducerA = {
  A: [],
  B: {},
  C: {},
  D: [],
};
reducerB = {
  E: {},
}
reducerA = {
  A: [],
  B: {},
  C: {},
  D: [],
  reducerB: {
    E: {}
  },
};
我有另一个减速机
reducerB
,看起来像这样

reducerA = {
  A: [],
  B: {},
  C: {},
  D: [],
};
reducerB = {
  E: {},
}
reducerA = {
  A: [],
  B: {},
  C: {},
  D: [],
  reducerB: {
    E: {}
  },
};
我想做的是将
reducerB
合并到
reduceera
中,并获得类似这样的东西

reducerA = {
  A: [],
  B: {},
  C: {},
  D: [],
};
reducerB = {
  E: {},
}
reducerA = {
  A: [],
  B: {},
  C: {},
  D: [],
  reducerB: {
    E: {}
  },
};
其中,状态变量A、B、C和D的更改在
reducerA
函数中触发,而状态变量E的更改仍在
reducerB
函数中触发

我已经尝试过使用
组合减速机
。但显然,它将
reducerA
reducerB
组合为外部减速器的子级。这需要我访问
reducerA
中的state变量作为
reducerA.reducerA.A

export default {
  reducerA: combinedReducers({reducerA, reducerB})
}

我想知道这个问题是否有一个相当临床的解决方案。我发现很多图书馆确实解决了这个问题。但是我仍然不愿意使用它们,如果可能的话,我希望在没有它们的情况下解决这个问题。

我认为您要求的是反对redux reducer概念并破坏封装。如果您想创建一个依赖于reducer和reducer的状态的reducer,您可能应该分别调度reducer和reducer,而不依赖于其他reducer

无论如何,当您使用react-redux时,我建议使用
mapDispatchToProps
,您可以在其中为组件道具创建全局状态映射,例如:

const mapStateToProps = state => {
  return state.reducerA.foo + state.reducerB.bar
}

connect(mapStateToProps)(YourComponent)

这应该能解决你的问题;D

我正在研究的是一种遗留代码。该代码具有完美运行的单元测试,并通过自动和手动测试用例进行了严格测试。因此,如果我要使用映射状态到道具来访问已经存在的结构,那么将有太多的地方需要将它们映射到道具。我在想,如果有一个解决方案存在的话,那将是一个很好的使用方法,但既然没有这样的解决方案,我将接受图书馆的帮助,当然你可以重用mapStateToProps方法并避免代码重复。如果你能在这里粘贴一个链接到一个可以满足你要求的图书馆,那就太好了。标记为正确的答案成功了。我正要使用的图书馆既漂亮又别出心裁。