我有这样的事情:
<Route path="/route/:param" component={DealContainer} />
然后在安装组件时,我正在进行客户端重定向:
componentWillMount() {
if (this.props.match.params.param != 'desired_one') {
this.props.history.push('/route/desired_one');
尽管url更改了组件没有重新安装...... 有什么想法吗?
答案 0 :(得分:2)
您应该使用&#34; react-router-dom&#34;中的 Redirect 组件来解决此问题。封装
<Route exact path="/route" component={DealContainer} />
<Route
exact
path="/route/desired"
render={() => <Redirect to="/route/desiredRedirectLocation" />}
/>
<Route path="/route/:param" component={DealContainer} />
此实施应该:
<强>解释强>
history.push的问题在于,React会发现你正在使用相同的组件,并且只会更新差异,而不会实际重新安装已经安装的组件。
另一方面,我的重定向示例将拦截您要重定向的路由而不先安装组件,因此在重定向发生后将安装组件,正确执行您需要的操作。