使用 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 Router v4 - 具有更改的默认路由的动态配置
React Router v4 嵌套路由 props.children