如何组合来自多个路由的减速器

Posted

技术标签:

【中文标题】如何组合来自多个路由的减速器【英文标题】:How to combine reducers from multiple routes 【发布时间】:2017-09-27 19:36:01 【问题描述】:

在一个简单的 TO-DO 应用程序中,通过将所有减速器放在一个文件夹中并组合它们,然后将减速器导入主 JS 文件并创建您的商店,可以直接管理您的应用程序状态。

import createStore from 'redux';

import reducers from './reducers';

const store = createStore(reducers);

但是,如果您有多个路由,并且您希望通过将每个路由保存在自己的 reducers 文件夹中来更好地组织您的目录结构。

类似这样的:

routes
  |-- contact
  |   |-- components
  |   |-- actions
  |   |-- reducers
  |
  |-- products
      |-- components
      |-- actions
      |-- reducers

我的问题是在这种情况下我应该如何处理我的应用程序状态?我的 main.js 文件会是什么样子?

【问题讨论】:

【参考方案1】:

导入你的 reducer 并使用 redux 的 combineReducers:

import createStore, combineReducers  from 'redux';
import contact from 'routes/contact/reducers';
import products from 'routes/products/reducers';

const rootReducer = combineReducers( contact, products );

const store = createStore(rootReducer);

为了更好地组织,创建一个 rootReducer.js 文件并在其中组合所有减速器。然后在您的 createStore 文件中导入 rootReducer。

【讨论】:

我实际上已经尝试过了。我认为必须有一种方法可以在运行时动态添加新的减速器,但似乎唯一的方法是在运行应用程序之前声明所有减速器,除非您想异步替换减速器以进行代码拆分。这就是我认为 Redux 的设计初衷。谢谢! 可能的 - 请参阅 ***.com/questions/32968016/… 和 medium.com/@jimmy_shen/… 了解在运行时添加减速器的示例。

以上是关于如何组合来自多个路由的减速器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用任何编程语言组合来自序列的多个图像?

如何在 Access 中将一个控件源与来自用户表单的多个组合框一起使用?

如何在 s-s-rS 中组合多个结果集?

如何使用反应路由器获取以前的位置?

如何将 memsql 用于组合多个表的报告

如何调用组合多个完成处理程序以将数据组合到一个新数组