vue $router传参 json_vue-router中params传参和query传参的区别及处理方法

在 Vue 实例内部,你可以通过 $router 访问路由实例。因此你可以调用 this.$router.push

想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之前的 URL。

这里我们主要采用对象跳转形式。

要跳转页面的path属性值:router.push({ path: 'my-exchange' }),对应router数组对象中的path属性值:

73e5ade72fd68b6d7c02f38c07f436e0.png

要跳转页面的name属性值:router.push({ name: 'my-exchange-index' }),对应router数组对象中的name属性值:

f84ce9bab785af645476b470c70208b7.png

给页面传参则在push函数传入的实参对象中的第二个属性传入 queryparams对象即可,对象中写具体要传的参数(注:如果queryparams对象中的属性传入的有引用类型的,则需要JSON.stringify(引用类型)转化一下)。

3f0d35131eaf1adc38b3e8489bfb37db.png

在对应的页面接收也只需要:this.$route.querythis.$route.params:

022b94b45b141b9c2893639b515ab67d.png

官方解释:

97054f8fddaa296320a548cd6d8d63a3.png

其中我个人建议对象的第一个属性用name来控制要跳转的页面,因为如果是path的话,params属性将会被忽略(也就是说传参要采用拼接字符串的方式,超不利于代码越多,看的还不舒服)。

同时对于第二个属性,我个人建议采用query来进行路由传参,因为 params 对象传参,只要页面一刷新你传入的参数就没了,query则保存在url地址中,你怎么刷新它都还在。

小总结一下:

使用params传参在浏览器的url地址栏中是不可见得,query则类似于get传参,是可见的。

params传参会丢失数据,query不会。

不过虽然params传参会丢失数据,但是它不会污染 url 路径,会显得 url 路径特别的整洁干净。

所以偶尔也会使用params传参。

当然啦,也有很多方法可以处理params传参会丢失数据问题,比如通过Cookies来存储数据即可。

af2f4ce414fee6d6b3c8e8af5ba3b3c5.png

在页面进入就执行的生命周期函数中看一下 this.$route.params 中有没有东西,如果有,则把它存到 Cookies 里面如果页面刷新了,数据没了,则直接从Cookies 里面拿即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值