如何组合来自多个路由的减速器
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/… 了解在运行时添加减速器的示例。以上是关于如何组合来自多个路由的减速器的主要内容,如果未能解决你的问题,请参考以下文章