在路线改变时反应力重新安装组件

Ven*_*SGS 3 reactjs react-router

对两条路由使用相同的组件时,如何在路由更改时重新安装组件?

这是我的代码。

路由.jsx

<Router history={browserHistory}>
  <Route path="/" component={Home} />
  <Route path="/foo/:fooId" component={Home} />
</Router>
Run Code Online (Sandbox Code Playgroud)

我有一个条件检查Home组件fooId,它相应地呈现 JSX。

<Link to="/foo/1234">fooKey</Link>
Run Code Online (Sandbox Code Playgroud)

目前,当单击fooKey路由时,Home 组件中的渲染功能会重新触发,但不会再次挂载。

我浏览了提到的其他答案componentWillReceiveProps,但我有很多配置 constructor ,我不想将所有这些配置移动到componentWillReceiveProps.

如果需要更多信息,请发表评论。

Lef*_*rik 10

如果您需要在每次路由匹配时强制重新安装组件,您可以通过key属性实现它,除非您知道自己在做什么:

<Route
  exact
  path={'some path'}
  render={props => <RemountAlways key={Date.now()} {...props} />}
/>
Run Code Online (Sandbox Code Playgroud)

key={Date.now()} 这个关键属性将强制反应每次重新安装。

注意: componentWillReceiveProps在 react 中是个坏消息。