React Router嵌套子路由

目标场景

<Router>
    <Switch>
      {/* 工具页的路由到toolPages组件中配置 */}
      <Route path="/toolPages" component={ToolPages}>
        <Route path="screenShot" component={<ScreenShot />}></Route>
      </Route>
    </Switch>
  </Router>

希望访问/toolpages/screebShot可以定位到【ScreenShot】组件,但是按照我预想的方法不能实现。

寻求理论

Router, Route,Link

  • 当 history 改变时, 会匹配出 Route 的一个分支,并且渲染这个分支中配置的组件,渲染时保持父 route组件嵌套子 route 组件。
  • Route放视图页面
  • Link 相当于是React中的a标签

路由匹配规则

优先级:自顶向下匹配路由

<Route path="/" >
// path遵循路由匹配规则:
//1. :parentName ——匹配一段位于/、?或#之后的URL,命中的部分接收到一个参数{name: ***}
<Route path="/hello/:name" /> //匹配/hello/child
 //2. () ——内部内容认为是可选
<Route path="/hello(/:name)" /> //匹配/hello/child, /hello
 //3. *匹配任意字符(非贪婪的)直到命中下一个字读,或者整个URL的末尾
<Route path="files/*.*" /> //匹配/files/hello.jpg
//如果路由使用了相对路径,那么完整的路径=它所有的祖先节点的路径拼上自身指定的相对路径,使用绝对路径可以忽略嵌套关系

嵌套子路由

先匹配到父组件,父组件要设置支持children传入渲染,但是在v5+版本上这样做不能匹配到第三级子路由。

最终做法

在父组件中做二次路由分配

<Route path="/toolPages" component={ToolPages} />
// ToolPages组件
<Switch>
   <Route path="/toolPages/screenShotPage" component={ScreenShotPage} />
</Switch>

参考文档:
https://react-guide.github.io/react-router-cn/docs/Introduction.html
https://www.ruanyifeng.com/blog/2016/05/react_router.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值