Vue 深入学习param和query两种传参方式及其区别

前言:

路由传参的时候,有俩兄弟,一个叫query,一个叫parmas;你说他们俩长得也不像吧,可这用法实在是太类似了。

下面就让我们从vue路由讲他们的区别

vue路由中的传参:

假设我们现在需要实现一个路由切换,点击之切换到W组件;并传递一个id值和一个age值

我们运用router-link来写。

然后一连串的疑惑就产生了

<router-link :to="{ A: 'xxx', query: { xx:'xxx' }}"/>
<router-link :to="{ A: 'xxx', parmas: { xx:'xxx' }}"/>
routes:{ ??? }

对于query和parmas来说:

  1. A用name还是path?
  2. routes要怎么写?
  3. url长什么样?
  4. 会有什么隐藏的坑么 

### query ### 

<router-link :to=``"{ name: 'W', query: { id:'1234',age:'12' }}"``/>`
`<router-link :to=``"{ path: '/W', query: { id:'1234',age:'12' }}"``/>

 name和path都可以用

前者的routes基于name设置

{``path: ``'/hhhhhhh'``, ``//这里可以任意``name: ``'W'``, ``//这里必须是W``component: W``}

 然后就把path匹配添加到url上去:

http:``//localhost:8080/#/hhhhhhh?id=1234&age=12

 后者基于path来设置routes

{``path: ``'/W'``, ``//这里必须是W``name: ``'hhhhhhhh'``, ``//这里任意``component: W``}

url:http://localhost:8080/#/W?id=1234&age=12 

这两种方法,都可以自定义path的样式,
不过一个是在router-link to里面定义,一个则是在routes里面定义
在接收参数的时候都是使用this.$route.query.id

 

 ### parmas ###

<router-link :to=``"{ name: 'W', params: { id:'1234',age:'12' }}"``/>

 这里只能用name不能用path,不然会直接无视掉params中的内容
然后在routes中添加

{``path:``'/W/:id/:age'``,``name:``'W'``,``component:W``}

 这里的name与上面router-link中的name保持一致;

url就取决于这个path的写法http://localhost:8080/#/W/1234/12;

注意:path里面的/w可以任意写,写成/hhhhh也可以

 但是!

 /:id和/:age不能省略,且不能改名字

不写的话,第一次点击可以实现组件跳转,且可以通过this.$route.parmas.id获取到传过来的id值,

但如果刷新页面,传过来的id值和age值就会丢失;

从这也能看出params比query严格;

上面query有代验证!!!!!!!!!!!

 

 

 router文件下index.js里面,是这么定义路由的:

{
   path:"/detail",
   name:"detail",
   component:home
}

1、传参方式

        query传参方式:query要用path来引入路由;

this.$router.push({
   path: "/detail",
   query: {code:"123"}
})    

        param传参方式:param要用name来引入路由;

this.$router.puth({
   name: "detail",
   param: {code: "123"}  
})

 2、取值:

        获取query传参的方式

this.$route.query.code //123

        获取param 传参的方式

this.$route.param.code //123

3、区别:

        1、用法上:

  query要用path来引入,params要用name来引入,接收参数都是类似的,分别是this.$route.query.code和this.$route.params.code。

        2、展示上:

query更加类似于我们ajax中get传参,params则类似于post,说的再简单一点,前者在浏览器地址栏中显示参数,后者则不显示;

        query:

         param:

 或者:

使用query传参的方式类似于get交互,传的参数在路由中显示,可以用作刷新后仍然存在参数。

使用param传参的方式类似于post交互,传的参数不会出现在路由中,界面刷新后传参就不存在。

也就是说传参跳转页面时,query不需要再路由上配参数就能在新的页面获取到参数,使用params不在路由配参数跳转,只有第一次进入页面参数有效,刷新页面参数就会消失。

注意要点:query与param两种传参,最大区别是   传参方式不一样,传的参数是否能在路由中显示,能否刷新后仍然传参 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值