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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 三万字带你了解那些年面过的Java八股文[通俗易懂]

    三万字带你了解那些年面过的Java八股文[通俗易懂]目录????前言1️⃣Java基础知识????基础知识导图????IO流????Lambda????&和&&的区别?????在java中如何跳出当前的多重循环?????面向对象的三大特征????”==”和equals方法究竟有什么区别?????三个与取整有关的方法????Java中运算符✨重载和重写的区别?????String和StringBuffuer、StringBuilder的区别?????java中有几种方法实现一个线程?用什么关键字修饰同步方法?stop()和suspend

    2022年6月1日
    35
  • php函数基础(一)

    php函数基础(一)

    2021年10月31日
    41
  • php与dreamweaver基础教程,Dreamweaver基础教程 基础技巧全面接触

    php与dreamweaver基础教程,Dreamweaver基础教程 基础技巧全面接触三、内容篇如何更快更方便得对内容进行组织,是每个朋友都想了解的,下面这几个技巧也许你知道,也许不知道,但重要的是通过不断的运用,你会发现它的优越性的。1、快速标签编辑。对于熟悉手写代码的朋友来说,经常需要切换到代码窗口手工添加一些代码。其实利用Dreamweaver的QuickTagEditor可以快速插入各种HTML标签,一个是点击属性面板的图标插入,另一种快捷方式是Ctrl+T,这两种方…

    2022年4月30日
    40
  • FlashFXP最新密钥-FlashFXP永久授权注册码分享

    FlashFXP最新密钥-FlashFXP永久授权注册码分享FlashFXP是一个功能强大的FXP/FTP软件,融合了一些其他优秀FTP软件的优点,如像CuteFTP一样可以比较文件夹,支持彩色文字显示;像BpFTP支持多文件夹选择文件,能够缓存

    2022年7月2日
    98
  • chmod 用法_举例说明chmod的两种用法

    chmod 用法_举例说明chmod的两种用法chmod[options]modefiles只能文件属主或特权用户才能使用该功能来改变文件存取模式。mode可以是数字形式或以whoopcodepermission形式表示。who是可选的,默认是a(所有用户)。只能选择一个opcode(操作码)。可指定多个mode,以逗号分开。options:-c,–changes只输出被改变文件的信息

    2022年10月20日
    3
  • MySQL相关问题整理

    MySQL相关问题整理备注:针对基本问题做一些基本的总结,不是详细解答!1.事务的基本要素2.事务隔离级别(必考)3.如何解决事务的并发问题(脏读,幻读)(必考)4.MVCC多版本并发控制(必考)5.为什么选择B+树作为索引结构(必考)6.索引B+树的叶子节点都可以存哪些东西(必考)7.查询在什么时候不走(预期中的)索引(必考)8.sql如何优化9.explain是如何解析sql的…

    2022年4月26日
    42

发表回复

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

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