(四十四)Vue Router的命名路由和路由组件传参

上一篇:(四十三)Vue Router之嵌套路由

下一篇:(四十五)Vue Router之编程式路由导航

命名路由

命名路由是为路由配置项提供一个名称,以便在代码中引用该路由。通过为路由配置项添加name属性,可以为路由指定一个唯一的名称。

配置:

const router = new VueRouter({
  routes: [
    {
      path: '/path1',
      name: 'name2', // 命名路由为 'name1'
      component: Component1,
    },
    {
      path: '/path2',
      name: 'name2', // 命名路由为 'name2'
      component: Component2,
    },
  ],
});

使用:

<router-link :to="{name:'name1'}"></router-link>
<router-link :to="{name:'name2'}"></router-link>

组件传参

query参数方式

可以使用query参数来传递额外的信息或参数。查询参数是在URL中以键值对的形式出现的,用于在路由之间传递数据。

参数传递

  • 字符串写法
<router-link :to="`/xxx?param1=${param1}&param2=${param2}`">
	query跳转携带参数
</router-link>
  • 对象写法
<router-link :to="{
          path:'/xxx',
          query:{
            param1:param1,
            param2:param2
          }
        }">
    query跳转携带参数
</router-link>

参数接收

   $route.query.id
   $route.query.title

params参数方式

使用路由参数(params)来传递动态的路径参数。路由参数是在URL中作为占位符的形式出现的,用于标识不同的资源或实体。

参数传递

  • 占位符形式
const router = new VueRouter({
  routes: [
    {
      path: '/xxx/:param1/:param2',
      component: Component,
    },
  ],
});
<router-link :to="`/xxx/${param1}/${param2}`">
   	params跳转携带参数
</router-link>
  • 对象写法
<router-link :to="{
          name:'detail',
          params:{
            param1:param1,
            param2:param2
          }
        }">
    params跳转携带参数
</router-link>

特别注意:路由携带params参数时,若使用to的对象写法,则不能使用path配置项,必须使用name配置!

参数接收

   $route.params.id
   $route.params.title

props配置方式

在组件中使用 $route 会使之与其对应路由形成高度耦合,从而使组件只能在某些特定的 URL 上使用,限制了其灵活性。

使用 props 将组件和路由解耦,props配置将会把参数以props的方式传递到目标组件,该配置属性可以是布尔值、对象或函数

布尔值形式

如果 props 被设置为 true,把路由组件收到的所有params参数,以props传递过来。

const router = new VueRouter({
  routes: [
    {
      path: '/path1',
      props: true, // 把路由组件收到的所有params参数,以props传给Component组件。
      component: Component,
    },
  ],
});

对象模式

props对象写法,对象中所有的数据都以props传递过来。

const router = new VueRouter({
  routes: [
    {
      path: '/path1',
      props: {
            param1:param1,
            param2:param2
      },
      component: Component,
    },
  ],
});

函数模式

props函数写法,该函数返回的对象中每一组数据都会通过props传递过来,可以配合query和params使用

const router = new VueRouter({
  routes: [
    {
      path: '/path1',
      props($route){
         return {
              param1:$route.query.param1,
              param2:$route.params.param2
          }
      }
      component: Component,
    },
  ],
});
  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忆亦何为

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值