Reactjs Redux connect“;积木;使用react路由器redux进行导航
在使用react、redux和react router的应用程序中,我使用react router redux发布导航操作。我发现在带有connect的组件中包装路由会阻塞导航 我用CodeSandbox制作了一个示例来说明这个问题: 按原样,导航不起作用。但是,如果在./components/Routes.jsx中,则此行:Reactjs Redux connect“;积木;使用react路由器redux进行导航,reactjs,redux,react-router,react-redux,react-router-redux,Reactjs,Redux,React Router,React Redux,React Router Redux,在使用react、redux和react router的应用程序中,我使用react router redux发布导航操作。我发现在带有connect的组件中包装路由会阻塞导航 我用CodeSandbox制作了一个示例来说明这个问题: 按原样,导航不起作用。但是,如果在./components/Routes.jsx中,则此行: export default connect(() => ({}), () => ({}))(Routes); 替换为: export default Ro
export default connect(() => ({}), () => ({}))(Routes);
替换为:
export default Routes;
它起作用了
你知道如何在一个组件中使用connect来包装路线而不中断导航吗?请参阅react redux文档中的部分
如果将Routes.jsx导出更改为:
export default connect(() => ({}), () => ({}), null, { pure: false })(Routes);
它会起作用的
这是因为默认情况下connect()实现了shouldComponentUpdate,
假设您的组件将在给定
同样的道具和状态
路线更改,但道具不会更改,因此视图不会更新
您可以通过路由器hoc实现同样的效果。不意味着重复 我用路由器这样的
修复了它
import { withRouter } from 'react-router-dom';
及
请参阅Redux,路由器集成文档您是否遇到过警告消息:
警告:您无法更改
使用路由器从反应路由器dom
我已经搜索了这么长时间,因为Redux正在重新创建我的App.jsx组件,该组件的父级为
,此警告只是冻结了我应用程序中的路由。我希望使用React/Redux组件,因为我需要将authenticated
props传递给Route组件,并基于它重定向,非常简单
所以从'react router dom'导入{withRouter}
并将连接到redux的组件环绕在以下位置:
使用路由器导出默认值(connect(mapstatetops)(App))代码>
还有:
大多数情况下,如果您想与路由器通信,使用一些道具,将其他东西传递给路由器,获取历史记录、位置信息,并且您正在应用程序中使用Redux,请使用withRouter
环绕此组件,您将可以作为道具访问这些属性
export default withRouter( connect(mapStateToProps)(App) );