Vue Router 的params和query传参的使用和区别(详尽)「建议收藏」

Vue Router 的params和query传参的使用和区别(详尽)「建议收藏」首先简单来说明一下$router和$route的区别//$router:是路由操作对象,只写对象//$route:路由信息对象,只读对象//操作路由跳转this.$router.push({name:’hello’,params:{name:’word’,age:’11’}})//读取…

大家好,又见面了,我是你们的朋友全栈君。

首先简单来说明一下$router$route的区别

//$router : 是路由操作对象,只写对象
//$route : 路由信息对象,只读对象

//操作 路由跳转
this.$router.push({
      name:'hello',
      params:{
          name:'word',
          age:'11'
     }
})

//读取 路由参数接收
this.name = this.$route.params.name;
this.age = this.$route.params.age;

1·query传递参数

我看了很多人都说query传参要用path来引入,params传参要用name来引入,只是我测试了一下,query使用name来引入也可以传参,使用path也可以。如果有人知道原因可以告诉我一下,谢谢!

//query传参,使用name跳转
this.$router.push({
    name:'second',
    query: {
        queryId:'20180822',
        queryName: 'query'
    }
})

//query传参,使用path跳转
this.$router.push({
    path:'second',
    query: {
        queryId:'20180822',
        queryName: 'query'
    }
})

//query传参接收
this.queryName = this.$route.query.queryName;
this.queryId = this.$route.query.queryId;

这里写图片描述

最终不管是path引入还是name引入效果都一样如下图
这里写图片描述

2·params传递参数

注:使用params传参只能使用name进行引入

  • 使用params传参
//params传参 使用name
this.$router.push({
  name:'second',
  params: {
    id:'20180822',
     name: 'query'
  }
})

//params接收参数
this.id = this.$route.params.id ;
this.name = this.$route.params.name ;

//路由

{
path: '/second/:id/:name',
name: 'second',
component: () => import('@/view/second')
}

这里写图片描述

效果如下图
这里写图片描述

需要注意的是:

  1. params是路由的一部分,必须要在路由后面添加参数名。query是拼接在url后面的参数,没有也没关系。
  2. params一旦设置在路由,params就是路由的一部分,如果这个路由有params传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容。

如果路由后面没有 /:id/:name效果如下图,地址栏没有参数
这里写图片描述

但是如果你刷新一下,就会发现页面失败,效果如下图
这里写图片描述

因此我们不可能让用户不要刷新,所以我们必须在路由后面加上 /:id/:name

  • 如果使用path进行传参
//params传参 使用path
this.$router.push({
  path:'second',
   params: {
    id:'20180822',
     name: 'query'
  }
})

//params接收参数
this.id = this.$route.params.id ;
this.name = this.$route.params.name ;

效果如下图

使用path传参什么效果都没有。

这里写图片描述

3.总结

  1. 传参可以使用params和query两种方式。
  2. 使用params传参只能用name来引入路由,即push里面只能是name:’xxxx’,不能是path:’/xxx’,因为params只能用name来引入路由,如果这里写成了path,接收参数页面会是undefined!!!。
  3. 使用query传参使用path来引入路由。
  4. params是路由的一部分,必须要在路由后面添加参数名。query是拼接在url后面的参数,没有也没关系。
  5. 二者还有点区别,直白的来说query相当于get请求,页面跳转的时候,可以在地址栏看到请求参数,而params相当于post请求,参数不会再地址栏中显示。

PS: 可能写的不够详细,或者有所缺失,请大家帮忙补充,同时还是那个问题,使用query为什么不能用params传参?会不会因为是却依然相当于get请求的方式,所以不可以。有人知道的话麻烦告诉我一下,非常感谢。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157367.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月11日 上午7:16
下一篇 2022年7月11日 上午7:36


相关推荐

  • 用计算机最炫民族风乐谱,最炫民族风乐谱及歌词[通俗易懂]

    用计算机最炫民族风乐谱,最炫民族风乐谱及歌词[通俗易懂]最炫民族风乐谱及歌词《最炫民族风》是凤凰传奇演唱的一首流行歌曲,由张超作词和谱曲,发行于2009年5月27日,是其第三张专辑《最炫民族风》的主打歌。下面由百分网小编为大家介绍《最炫民族风》乐谱,希望能帮到你。《最炫民族风》乐谱【图片来源:中国曲谱网】《最炫民族风》歌词苍茫的天涯是我的爱绵绵的青山脚下花正开什么样的节奏是最呀最摇摆什么样的歌声才是最开怀弯弯的河水从天上来流向那万紫千红一片海火辣辣的歌…

    2026年2月17日
    4
  • php7 502 bad gateway,502 bad gateway怎么解决

    php7 502 bad gateway,502 bad gateway怎么解决502BadGateway错误是HTTP状态代码,表示Internet上的一台服务器收到来自另一台服务器的无效响应。在前面的文章中,已经给大家详细介绍了502badgateway是什么意思以及出现这种错误的一些原因总结。那么我们怎么解决502badgateway错误?502BadGateway错误通常是互联网上服务器之间的网络错误,也或者因为您的计算机或互联网连接出现问题。所以我们…

    2022年6月24日
    34
  • Pytorch优化器全总结(一)SGD、ASGD、Rprop、Adagrad

    Pytorch优化器全总结(一)SGD、ASGD、Rprop、Adagrad这是一个系列 以 Pytorch 为例 介绍所有主流的优化器 如果都搞明白了 对优化器算法的掌握也就差不多了 作为系列的第一篇文章 本文介绍 Pytorch 中的 SGD ASGD Rprop Adagrad 其中主要介绍 SGD 和 Adagrad 因为这四个优化器出现的比较早 都存在一些硬伤 而作为现在主流优化器的基础又跳不过 所以作为开端吧

    2026年3月18日
    3
  • mysql 唯一索引_mysql主键和唯一索引的区别

    mysql 唯一索引_mysql主键和唯一索引的区别Mysql索引大概有五种类型:普通索引(INDEX):最基本的索引,没有任何限制唯一索引(UNIQUE):与”普通索引”类似,不同的就是:索引列的值必须唯一,但允许有空值。主键索引(PRIMARY):它是一种特殊的唯一索引,不允许有空值。全文索引(FULLTEXT):可用于MyISAM表,mysql5.6之后也可用于innodb表,用于在一篇文章中,检索文本信息的,针对较大的数据,生成全文索引很耗时和空间。联合(组合)索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原

    2026年1月31日
    3
  • Dubbo Failover机制

    Dubbo Failover机制背景 nbsp nbsp nbsp nbsp 某个服务有 2 台机器 但是其中一台机器挂了 dubbo 的重试还是会调用这台机器 经过查资料 推荐使用 Failover 机制 nbsp 过程 nbsp nbsp nbsp nbsp 经过跟踪源码 发现 dubbo 默认的容错机制就是使用了 Failover 在执行调用前会直接进入 FailoverClus class 的 doInvoke 中 翻开源码 publicResult

    2026年3月17日
    2
  • uniapp中globalData刷新后会丢失

    uniapp中globalData刷新后会丢失globalData 只是一种变量缓存 刷新后就会丢失 解决办法 使用 uniapp 本地缓存

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号