React Router嵌套子路由

React Router嵌套子路由,第1张

目标场景
<Router>
    <Switch>
      {/* 工具页的路由到toolPages组件中配置 */}
      <Route path="/toolPages" component={ToolPages}>
        <Route path="screenShot" component={ />}>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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1296045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存