我知道以前有人问过这个问题,但我一直对此有疑问。
我遇到的问题是,当我使用类似页面布局的组件来包装我的路线时,更改路径时会重新呈现此页面布局。
在 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中,我已经尝试了几种方法:
Switch
用MainLayout
组件包装- 创建一个
RouteWithMainLayout
包装的组件Route
(如此处所述:https ://simonsmith.io/reusing-layouts-in-react-router-4/ ) - 此处描述的一些方法:https ://github.com/ReactTraining/react-router/issues/3928
但是,我尝试过的所有解决方案似乎都重新渲染了MainLayout
组件,基本上导致state
重置为其初始值。
tldr; 如何创建一个在更改路径时不会重新渲染的包装组件react-router v4