vue的路由传参的3种方式

$router.push()

push()有两种方式:一种是通过path,一种是通过name。然后无论是path还是name都有paramsquery方式进行传递,如下:
type = “居住类”
this.$ router.push({path: /message/${type}})

this.$router.push({path:"/message",query:{ type: “居住类”}})

this.$router.push({name:“message”,params:{ type: “居住类”}})

this.$router.push({name:“message”,query:{ type: “居住类”}})

到这里有人就有疑惑了,path方式明明没有通过params进行传参啊,没错,看起来没有啊,但只是看起来而已,请看下两张图:

在这里插入图片描述
在这里插入图片描述
看到了吗?其实它本质上是经过params传递的。

更没想到的是,其实在传递参数的时候,可以同时params方式和query方式进行传递参数。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
其实这没什么好惊讶的,路由对象中都有query,params对象,当然可以两种方式一起了。
最后,注意一下,params方式时需要在路由定义的path中要表明你要传递的参数。query方式不用,想传什么就传什么,才不管他呢!
在这里插入图片描述

<router-link>

<router-link>其实没什么好讲的,<router-link>的to属性的值就是push里面的第一个参数,一模一样的。为什么呢?其实是<router-link>的内部就是通过router.push()进行路由访问的。

路由组件传参

其实就是在路由定义的时候,进行了如下操作。
单个组件时:
在这里插入图片描述
多个组件时:
在这里插入图片描述
当然还要在对应的组件中进行如下操作:
在这里插入图片描述
如果 props 被设置为 true,route.params 将会被设置为组件属性。这样你就可以在那个路由,通过如this.id的方式获得参数,但这种方式只适用于params方式传参的时候,用这种方式获得params对象的参数,query的不行。
那么这种方式有什么好处呢?
使用 props 将组件和路由解耦。vue文档是这么说的,我也不明白,有人知道的话,告诉我啊。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值