【发布时间】:2017-10-17 03:05:39
【问题描述】:
我知道以前有人问过这个问题,但我一直对此有疑问。
我遇到的问题是,当我使用类似 页面布局 的组件来包装我的路线时,此页面布局在更改路径时会重新渲染。
在 react-router v3 中我做了这样的事情:
<Router history={this.props.history}>
<Route path="/">
<IndexRedirect to="/Dossiers" />
<Route path="/Dossiers" component={MainLayout}>
<IndexRoute component={DossiersPage} />
<Route path="/Dossiers/:dossierId/:title" component={DossierDetailsPage} />
</Route>
</Route>
</Router>
当移动路径时,这不会重新渲染MainLayout 组件(通过在MainLayout 中放置一些东西很容易检查)。
现在,在 react-router v4 中我已经尝试了几种方法:
- 用
MainLayout组件包装Switch - 创建一个包装
Route的RouteWithMainLayout组件(如下所述:https://simonsmith.io/reusing-layouts-in-react-router-4/) - 这里描述的一些方法:https://github.com/ReactTraining/react-router/issues/3928
但是,我尝试过的所有解决方案似乎都重新渲染了 MainLayout 组件,基本上导致 state 重置为其初始值。
tldr;如何在react-router v4 中创建一个包装组件,它在更改路径时不会重新渲染
【问题讨论】:
标签: reactjs react-router react-router-dom