路由嵌套

什么叫路由嵌套?

所谓的路由嵌套,其实就是路由之间包含子路由


一般我们都会把包含路由的设置单独定义在一个router.js文件里。常见的类型就如下所示:

1、定义路由一般都包含path(路由的路径)、component(对应组件的名字,一般为引入组件的定义的名字)、name(一般为组件定义一个名字,常用于路由跳转,推荐使用

 {
      path: "/",
      component: H,
      name: "Home"
    }

2、路由也是可以传参。如下所示,包含?代表是可选的。例:/list/3  3就为对应的id值;/list/2/car  car就回自动分配给nam。但是可选参数一般在路由的最后

 {
      path: "/list/:id/:name?", // 路由传参,传递参数id, :name? 表示此为可选参数
      component: D,
      name: "Detail"
    },

3、重点强调子路由(children)。路由是可以嵌套多层的,查找的时候为/user/info/address,就能对应查找到地址的页面。要注意,以 / 开头的嵌套路径会被当作根路径。 这让你充分的使用嵌套组件而无须设置嵌套的路径。

   {
      path: "/user",
      component: U,
      name: "User",
      children: [
        // 子路由,路由嵌套
        {
          path: "info",
          component: UI,
          name: "UserInfo",
          children: [
            {
              path: "address",
              component: UA,
              name: "UserAddress"
            }
          ]
        }
      ]
    }

ps:当设置user时的路径为/user/:id,想要访问/user/foo的路径是要怎样设置?会出现没有匹配到合适的界面,此时,需要做的是设置一个空的子路由。

 {
      path: '/user/:id', component: User,
      children: [
        // 当 /user/:id 匹配成功,
        // UserHome 会被渲染在 User 的 <router-view> 中
        { path: '', component: UserHome },

        // ...其他子路由
      ]
    }

当然在页面跳转的时候也是可以传对应的参数。常用的router-link,结合to进行跳转,可以用path,也可以用name跳转

 <router-link :to="{
      path: '/'
    }">【首页】</router-link>
//  name: 'List'用name跳转的时候,名字是单引号

讲到这一部分,就需要大家了解一点知识。详情请参考官网

对于query和params来说还有有一定的区别的:

1、query来说,在路由时的形式为/list?c=mobile   在路由设置里面直接写/list

2、params来说,在路由时的形式为/list/3/小明   在路由设置的形式为/list/:id/:name

 <router-link :to="{
      name: 'List',
      query: {
        c: 'mobile'
      }
    }">【列表】</router-link>
    <router-link
      :to="{
      name: 'Detail',
      params: {
        id: '3',
        name: '小明',
        age: 18,
    }"
    >【详情页--1】</router-link>

编程式路由跳转

export default {
  methods: {
    pageTo(routeName) {
      // 编程式路由路由跳转
      this.$router.push({
        name: routeName
      });
    }
  }
};

query要用path来引入,params要用name来引入,接收参数都是类似的,分别是this.$route.query.name和this.$route.params.name。注意,这里获取用的是$route

 query更加类似于我们ajax中get传参,params则类似于post,说的再简单一点,前者在浏览器地址栏中显示参数,后者则不显示

query:        

params:    

参考:https://www.cnblogs.com/lulianlian/p/7682790.html

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值