reactjs - React Router:用组件包装一些路由,而不是直接在 Switch 内部
问题描述
我正在尝试做这样的事情
<Switch>
<SomeNavBar>
<Route path="page1">Page 1</Route>
<Route path="page2">Page 2</Route>
<Route path="page3">Page 3</Route>
</SomeNavBar>
<OtherNavBar>
<Route path="admin">Admin Page</Route>
</OtherNavBar>
</Switch>
我有一个不是管理页面的路由的包装器组件。
但是,管理路由不会呈现Admin Page
它只是呈现一个空白页面。其他路线工作正常。
有没有办法实现这种行为?
解决方案
您的示例有几个问题与您应该先纠正的问题无关。
首先是 a 的直接子级Switch
必须始终是 aRoute
或Redirect
- 它不知道如何处理任何其他元素,只会渲染它看到的第一件事(在您的情况下,SomeNavBar
组件)。第二个是path
声明必须以斜线开头,以便路由器正确构建它们,/page1
例如/admin
。
顺便说一句,这里有一个有点做作的例子,说明如何获得你所追求的行为。对于页面,我们在渲染之前检查可能的片段列表SomeNavBar
和正确的路线。还要注意exact
参数 - 这样我们就不会匹配仅以特定片段开头的路径,例如/page1foo
:
<Switch>
<Route exact path={['/page1', '/page2', '/page3']}>
<SomeNavBar>
<Route path="/page1">Page 1</Route>
<Route path="/page2">Page 2</Route>
<Route path="/page3">Page 3</Route>
</SomeNavBar>
</Route>
<Route path="/admin">
<OtherNavBar>
Admin Page
</OtherNavBar>
</Route>
</Switch>
推荐阅读
- eclipse - xtext 生成的方法在生成器中是错误的
- vim - vimtex: force } 和 { 不跳过空行
- javascript - jQuery (Cheerio) 不返回 img src 链接
- kotlin - 检查kotlin中对象中的一个字段是否不为空
- javascript - 如何使用 jquery 制作全屏 iframe 视频
- r - R googleway - 关闭闪亮的传说
- java - 如何在 Spring AMQP 中监听现有队列?
- ms-access - 在查询中设置字段格式以报告
- c# - 在 C# 中将 SID 转换为 GUID?
- git - 并行获取多个 Git 遥控器