reactjs - 如何在 React Router v2 中为特定参数值渲染嵌套路由?
问题描述
我目前在一个项目中使用 React Router v2.8.1,虽然我更愿意,但我并没有迁移到 v4+ 的选项。我有一个组件 ( Admin
) 处理基于路由中的参数显示一些内容,我的目标是为特定选项卡 (例如 )tab
充实一些额外的路由。"pages"
<Router history={browserHistory}>
<Route path="/" component={Layout}>
<Route path="/admin/:tab" component={Admin}>
<Route path="/admin/pages/edit/:ref" component={EditPages} />
</Route>
</Route>
</Router>
使用此设置,Admin
组件将使用 props{params: {ref: '...'}}
而不是它匹配的值呈现tab
,因此它不会显示"pages"
选项卡。由于路由器没有理由在Admin
没有匹配的情况下进行渲染:tab
,所以我不明白为什么省略了这个参数。
解决方案
我找到了使用getChildRoutes
道具的解决方法:
<Route
path="/admin/:tab"
component={Admin}
getChildRoutes={(location, cb) => {
const { tab } = location.params
switch (tab) {
case 'pages':
cb(null, {
path: 'edit/:ref',
component: EditPages
})
break
default:
cb(null, [])
}
}}
/>
我希望这对将来可能遇到此问题的任何人有所帮助。
推荐阅读
- scala - 是否可以模拟 Scala 隐式类?
- javascript - JavaScript 获取查询字符串参数的值
- r - Efficient cleaning of missing value in dataframe in R
- jquery - How to store a movieID in variable
- python - 如何克服python中的正则表达式深度限制?
- python - 通过 langdetect.detect 得到错误答案
- javascript - 传单标记未显示在网站中 - Codeigniter
- php - 依次在php数组中查找值
- kubernetes - Openshift/OKD 模板 if/else 条件
- r - 基于posixct日期时间和两个变量的data.table过滤解决方案?