使用 React 路由器 v4 在 react-boilerplate 中加载异步减速器和 sagas

Posted

技术标签:

【中文标题】使用 React 路由器 v4 在 react-boilerplate 中加载异步减速器和 sagas【英文标题】:Load Async reducers and sagas in react-boilerplate with React router v4 【发布时间】:2019-03-16 13:56:09 【问题描述】:

我正在考虑将项目迁移到最新的 react-boilerplate 版本,并且许多模块已更改。我在使用 React 路由器 v4 来玩我的减速器和 saga 时遇到问题。我看了Dynamically load redux reducers with react router 4 我现在收到以下错误: 警告:React.createElement:类型无效 - 需要一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:对象。

检查withReducer(Component)的渲染方法。 在 withReducer(Component) 中(由 Route 创建) 在 Route 中(由 App 创建) 在 Switch(由 App 创建) 在 div 中(由 App 创建) 在 App 中(由 Connect(App) 创建) 在 Connect(App) 中(由 Route 创建) 在 Route 中(由 withRouter(Connect(App)) 创建) 在 withRouter(Connect(App)) 在路由器中(由 BrowserRouter 创建) 在浏览器路由器中 在 IntlProvider 中(由 LanguageProvider 创建) 在 LanguageProvider 中(由 Connect(LanguageProvider) 创建) 在 Connect(LanguageProvider) 在提供者中

我的代码与我遵循的示例略有不同,因为我正在添加 withRouter:

const withConnect = withRouter(connect(mapStateToProps, mapDispatchToProps));

const addHelpReducer = injectReducer( key: 'help', reducer: helpReducer );

export default compose(
    addHelpReducer,
    withConnect
  )(Help);

injectReducer 来自 react-boilerplate utils 文件,我没有修改该文件或 configureStore 文件。

【问题讨论】:

【参考方案1】:

我想出了如何做到这一点:

export default compose(
    withRouter,
    withReducer,
    withSaga,
    withConnect
  )(Help);

虽然我现在进入了另一个问题。关闭这个。

【讨论】:

以上是关于使用 React 路由器 v4 在 react-boilerplate 中加载异步减速器和 sagas的主要内容,如果未能解决你的问题,请参考以下文章

使用 React Router v4 的嵌套路由 - 解决方案

路由不适用于 React 路由器 v4

React Router v4 - 具有更改的默认路由的动态配置

React Router v4 嵌套路由 props.children

react-router v4 使用 history 控制路由跳转

浅入浅出 react-router v4 实现嵌套路由