我有一个React应用程序声明了一些路由:
<Switch>
<Route exact path={'/'} render={this.renderRootRoute} />
<Route exact path={'/lostpassword'} component={LostPassword} />
<AuthenticatedRoute exact path={'/profile'} component={Profile} session={session} redirect={'/'} />
<AuthenticatedRoute path={'/dashboard'} component={Dashboard} session={session} redirect={'/'} />
<AuthenticatedRoute path={'/meeting/:meetingId'} component={MeetingContainer} session={session} redirect={'/'} />
<Route component={NotFound} />
</Switch>
(AuthenticatedRoute
是一个用于检查会话的愚蠢组件,可以调用<Route component={component} />
或<Redirect to={to} />
,但最后会调用component
方法。
基本上每个组件在路由更改时安装/卸载。我希望保留{strong>除了之外的Dashboard
路线,它可以做很多事情,并且我希望不在仪表板上卸载(让&#39;如果你到达会议页面,你不需要安装你的仪表板)但是一旦你装载了你的仪表板,当你进入你的个人资料页面,会议或其他什么时,当你回到你的仪表板时,该组件会不必再次装载。
我在React-router doc上读到render或者孩子可能是解决方案,而不是组件,但是我们可以将路由与子项和其他组件混合使用吗?我尝试过很多东西而且从未达到我想要的效果,即使使用render
或children
,我的仪表板组件仍在挂载/卸载。
感谢您的帮助
答案 0 :(得分:9)
electron-rebuild
组件只渲染单条路线,最早的匹配获胜。由于npm run electron-rebuild
组件位于其中,因此只要其他路由匹配,就会卸载它。将此Switch
移到外面,它将按预期与Dashboard
或Route
一起使用。