Javascript React Redux-减速器之间的共享状态(减速器层次结构)

Javascript React Redux-减速器之间的共享状态(减速器层次结构),javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,说我有一个类似expedia的搜索栏标签: 我希望一些字段(如出发日期和返回日期)对所有选项卡都是通用的 所以我的状态应该是这样的 { commonReducer: { startDate: endDate: }, hotelsReducer: { rooms: [], location: [] }, flightsReducer: { from: to: } etc... } 当commonReducer数据在所

说我有一个类似expedia的搜索栏标签:

我希望一些字段(如出发日期和返回日期)对所有选项卡都是通用的

所以我的状态应该是这样的

{
  commonReducer: {
    startDate:
    endDate: 
  },
  hotelsReducer: {
    rooms: [],
    location: []
  },
  flightsReducer: {
    from:
    to:
  }
  etc...
}
commonReducer
数据在所有其他选项卡缩减器之间共享时,因为当他们单击搜索按钮时,所有缩减器都应该知道所选日期及其特定数据

有没有一种方法可以在减速器之间共享数据?或者具有某种层次结构,如:

{
  searchTabsReducer: {
    commonReducer: {
      startDate:
      endDate: 
    },
    hotelsReducer: {
      rooms: [],
      location: []
    },
    flightsReducer: {
      from:
      to:
    }
    etc...
  }
}
因此,
searchTabsReducer
将处理所有提交(因为他是唯一一个掌握搜索选项卡状态全貌的人)

据我所知,该函数不支持层次结构

我最终得到了一个太大的文件,其中包含了所有的选项卡状态,但感觉不太对


谢谢。

在减速器之间共享数据只需要创建独立的减速器。在其他减速器中,减速器始终可用

使用redux,来自应用程序状态的所有数据都可以在所有应用程序中使用

此外,在触发操作时,可以为您提供从应用程序状态访问所有数据的方法:

(dispatch, getState) => {
  ...
}; 
否则,您可以在任何地方导入redux操作,以使特定减速器的操作触发另一个减速器的操作


这样,“组合”方法解决了所有用例。

在减速器之间共享数据只需要创建独立的减速器。在其他减速器中,减速器始终可用

使用redux,来自应用程序状态的所有数据都可以在所有应用程序中使用

此外,在触发操作时,可以为您提供从应用程序状态访问所有数据的方法:

(dispatch, getState) => {
  ...
}; 
否则,您可以在任何地方导入redux操作,以使特定减速器的操作触发另一个减速器的操作


通过这种方式,“组合”方法解决了所有用例。

不需要组合减速器,只需将所需减速器的状态连接到要在其中显示数据的容器


从那里,使用该数据分派操作,例如搜索操作。

无需组合还原程序,只需将所需还原程序的状态连接到要在其中显示数据的容器即可


从那里,使用这些数据来调度操作,例如您的搜索操作。

我早就遇到了同样的问题,但我意识到我可以获取容器中的所有状态数据,因此我保持了层次结构的还原器“干净”,并结合了数据容器级别。您的意思是,容器将数据调度到还原器?不。我保持了还原程序的原样,并在容器中混合数据,将其输入到组件中。这并不能解决您的问题,它可以避免。啊,而且,我确实使用thunk来创建其他操作。我在一段时间前遇到了相同的问题,但我意识到我可以获取容器中的所有状态数据,所以我保持了还原器的“干净”一个层次结构,并结合了数据容器级别。您的意思是,容器将数据发送到缩减器?不。我保持了还原程序的原样,并在容器中混合数据,将其输入到组件中。这并不能解决您的问题,它可以避免。啊,而且,我确实使用thunk来创建其他操作。