在反应中,当路由路径不同但组件相同时。如何防止重新安装?

Posted

技术标签:

【中文标题】在反应中,当路由路径不同但组件相同时。如何防止重新安装?【英文标题】:In react, when the route path is different, but same component. How can I prevent re-mounting? 【发布时间】:2017-09-11 23:51:16 【问题描述】:

在 react router (v2) 中,当路由路径不同但组件相同时。

我们如何防止重新挂载组件,例如卸载组件然后再次挂载组件。

它会导致调用 componentDidMount 两次。

当有订阅请求时,我的应用会订阅两次。

所以订阅的事件会被调用两次。

我该如何解决?

【问题讨论】:

【参考方案1】:

只需嵌套您的 react-router 代码。如下所示,

  <Route component=Home>
    <IndexRoute />
    <Route path="/" />
    <Route path="/market" />
  </Route>

父标签只定义你要调用一次的组件,子标签只定义路径。

那么如果路由路径将'/'更改为'/market',则不会重新挂载组件。

以下代码是您可能不想要的重新安装场景。

...

<Route component=Home path="/" />
<Route component=Home path="/trade" />

...

【讨论】:

以上是关于在反应中,当路由路径不同但组件相同时。如何防止重新安装?的主要内容,如果未能解决你的问题,请参考以下文章

在 react-router v4 中对不同的路由路径使用相同的组件

如何将支柱传递到反应路由器路由?

在反应中的 url 更改上重新渲染相同的组件

更改 url 参数时反应路由器不重新加载组件

嵌套反应路由器组件不会在页面重新加载时加载/渲染?

在重新渲染时反应不更新属性