我有两个导航栏项目,当我想通过单击导航栏中的项目从一个页面切换到另一页面时,它们具有不同的路由,组件未安装但路由已更改。
我正在调查此问题,并找到了使用componentWillReceiveProps()方法的解决方案。
我尝试过这种方法:
当我声明路由时,我将prop currentRoute
传递给组件。
稍后在componentWillReceiveProps
中检查下一步,该道具currentRoute
如果不相同,则调用重置状态的函数。
代码:
// THIS ARE ROUTES:
if (route === '/intakeAnalytics') {
return <Analytics userRole={userRole} currentRoute="/intakeAnalytics" />
}
if (route === '/adjusterAnalytics') {
return <Analytics userRole={userRole} currentRoute="/adjusterAnalytics" />
}
// componentWillReceiveProps
async componentWillReceiveProps(nextProps) {
if (nextProps.currentRoute !== this.props.currentRoute) {
this.setDefaultData()
}
}
注意:这两个路由都使用相同的“ Analytics”组件,即使用同一个组件的两个不同的分析。