query传参和params传参的区别

query传参和params传参的区别

query传参

  使用 this.$router.push({path: ‘/’, query: {参数名: ‘参数值’})

​ 传递:

this.$router.push({
        name: 'HelloWorld',
        path: "/HelloWorld",
        query: {
          name: this.loginform.name,
        },
      });

​ 接收:

cosnt name = this.$route.query.name

params传参

  使用 this.$router.push({path: ‘/’, name: ‘’, params: {参数名: ‘参数值’})

​ 传递:

this.$router.push({
        name: 'HelloWorld2',
        path: "/HelloWorld2",
        params: {
          name: this.loginform.name,
        },
      });

​ 接收:

cosnt name = this.$route.params.name

两者的区别

  • query可以通过name属性或者path属性来引入路由,而params只能通过name属性来引入路由;在使用params传递时如果指定了path属性而没有name属性,那么界面能成功跳转但是不能接受到传递过来的参数
  • query传递参数时会地址栏会发生改变,传递参数会携带在路径中,而params则不会
  • 在刷新界面时,query传递的参数不会丢失,而params会丢失

顺带一提vue-router的routes中name属性的作用

  平常在定义路由时都会有一个name属性,通常不去定义这个属性发现也没有任何问题,但是name属性还是有以下作用的

通过name属性,为一个页面中不同的router-view渲染不同的组件

<template>
  <div id="app">
     <router-view></router-view>
     <router-view  name="Hello"></router-view> 
     <router-view  name="text"></router-view>   
  </div>
</template>

可以用name传参 使用$route.name获取当前组件name值

 <template>
  <div id="app">
      // 当前组件的name值
    <p>{{ $route.name }}</p> 
    <router-view></router-view>
  </div>
</template>

作为传参时的路由,如上所示


总结:

  需要特别注意两种传递方式的区别,通俗的讲,query类似axios中get,而params则类似post,但是需要记得 params传递参数一定要去指定一下name属性,否则会接受不到传递的参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值