reactjs - React Router - 登录前和登录后的结构导航栏
问题描述
有人可以帮我用 React Router 构建 React App
<div>
<Navbar /> //Navbar should be shown only for '/' and '/login'
<Route path="/" component={IndexPage} />
<Route path="/login" component={Login} />
<Footer /> //Footer should be shown only for '/' and '/login'
<NavbarInside /> //NavbarInside should be shown only for '/dashbaord' and '/settings'
<Route path="/dashbaord" component={Dashbaord} />
<Route path="/settings" component={Settings} />
<FooterDashboard /> //FooterDashboard should be shown only for '/dashbaord' and '/settings'
{/* <Route component={NoMatchPage} />Check 404 not working */}
</div>
解决方案
将几个根Route
组件渲染为Switch
与您想要渲染嵌套导航栏的“分组”路由匹配的一个。
- 外部
Switch
组件确保只有 1 个“组”被匹配和渲染。 - 内部
Switch
组件确保仅匹配和呈现 1 个“嵌套”路由。注意路由顺序和路径特异性,即更具体的路径排在不太具体的路径之前。
从您的代码框:
<Switch>
<Route path={["/dashboard", "/settings"]}>
<NavbarInside />
<Switch>
<Route path="/dashbaord" component={Dashbaord} />
<Route path="/settings" component={Settings} />
</Switch>
<FooterDashboard />
</Route>
<Route path={["/about", "/"]}>
<Navbar />
<Switch>
<Route path="/about" component={AboutPage} />
<Route path="/" component={IndexPage} />
</Switch>
<Footer />
</Route>
</Switch>
注意:如果您尝试重新集成路由/组件,可能会出现奇怪的情况,NoMatchPage
因为“/”是所有路径的前缀,它将被匹配并渲染IndexPage
组件。您可以exact
在根路由上使用该道具,但这将排除“/about”上的任何嵌套路径。
推荐阅读
- python - 可被任何给定数整除的回文数
- c# - 如何限制datalist中的单词数?
- xml - 多语言页面的 sitemap.xml
- angular - 如何以角度显示从api获取的数据
- python - bazel 构建 tensorflow/tools/graph_transforms:transform_graph 错误
- android - 为什么 Gluon Mobile 应用程序的 iOS 版本比 Android 的相同应用程序版本大 10 倍?
- c++ - 如果代码正确,为什么我在 OK 按钮上会出现这些错误?
- python - 使用 joblib 和 SLURM 在 Python 中并行化 for 循环
- php - 带有特殊字符的电话号码的正则表达式
- java - 使用 Firebase 适配器将新项目移动到回收站视图的顶部