vue-router 父路由重定向到子路由加载问题

本文详细探讨了Vue Router中嵌套路由的配置,特别是关于重定向的问题。作者指出,当子路由的path前带有'/'时,会作为根路径直接访问,导致父组件和子组件一同加载。通过一个实例解释了如何配置重定向,以及访问子路由时如何避免加载父组件。最后,解释了Vue Router官方文档中关于路径前缀'/'的影响,总结了路径配置的规则。
摘要由CSDN通过智能技术生成

最近在学习vue后找了一个vue-admin-template框架进行搭建和改造,发现一个地方,困恼了很久。

困扰:使用redirect,这里使用了重定向,按我的理解是,页面只加载重定向后的组件。可是结果却是父组件Layout(菜单组件)也加载出来了。

经过查阅资料:最总发现一片写的很明白:https://www.jianshu.com/p/1e24bfbee631

转载资料:

const routes = [
  {
    path: '/home',
    name: 'Home',
    component: Home,
    children: [
      {
        path: 'son',
        name: 'Son',
        component: Son
      }
    ]
  }
]

这时候访问son组件的路由是/home/son
但是在项目中配置的时候我们往往都要配置一个重定向,由父页面指向子页面

const routes = [
  {
    path: '/home',
    name: 'Home',
    component: Home,
    redirect: '/son',//这里配置了重定向
    children: [
      {
        path: '/son',//这里的路径跟上边的不一样,前边加上了'/'
        name: 'Son',
        component: Son
      }
    ]
  }
]

这时候只要我们访问主页面/home页面就会跳转到/son路由,并把home组件连带son组件一起加载出来。这与上边有什么不同呢?上边访问的路径是/home/son,而这里只要访问/son就能直接打开同样的页面。在网上找了好多资料,最后在官网找到这样一句话

 

我理解的意思是,如果在嵌套路由的path前加上了'/',那么这个path就会被当作根路径。所谓根路径应该就是可以直接访问到的路径,vue-router应该会把以'/'开头的子路由与它所在的父组件默认绑定在一起,当我们访问/son时就相当于访问了/home/son

最后总结一句话就是:子路由的path如果前边带 '/ ' 则访问这个子路由时只需要访问子路由的path,系统会默认加载它所在的父组件。如果前边没有 '/ ' 那么需要按照 /父路由/子路由的形式访问

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值