关于vue-router 中参数传递的那些坑(params,query)

vue-router传递参数分为两大类:

  1. 编程式的导航 router.push
  2. 声明式的导航

**query和params的区别,query相当于get请求,在页面跳转的时候,可以在地址栏看到请求参数,然而params则相当于post请求,参数不会在地址栏中显示,但是刷新页面之后参数会消失,可以使用localStorage进行存储。**代码如下:

if(this.$route.params.userId){this.value = this.$route.params.userId;localStorage.setItem('content',this.$route.params.userId)
}else{this.value = localStorage.getItem('content')console.log(this.value)
}

很多人都说query传参要用path来引入,params传参要用name来引入,确实是这样,不过只针对router-link方法,具体看代码

<router-link :to="{path:'/about/shopList',query:{userId:123}}">吃火锅
</router-link>
<router-link :to="{name:'shopList',params:{userId:456}}">吃羊蝎子
</router-link>他们同样都跳转到shopList页面,通过this.$route.params.userId和this.$route.query.userId都获取到了参数
如果将代码换成如下:<router-link :to="{path:'/about/shopList',params:{userId:123}}">吃火锅
</router-link>
<router-link :to="{name:'shopList',query:{userId:456}}">吃羊蝎子
</router-link>
同样跳到shopList页面,却拿不到参数userId。。。

router.push并不是如此,直接上代码

1.this.$router.push({name: 'shopList',params:{userId: 666}
})
2.this.$router.push({name: 'shopList',query:{userId: 666}
})
不仅name和params传递的参数有效,而且name和query传递的参数也是有效的。3.this.$router.push({path:'/about/shopList',query:{userId: 666}
})path和query传递参数,在shopList页面可以===接收到参数===
4.this.$router.push({path:'/about/shopList',params:{userId: 666}
})path和params传递参数,在shopList页面====接收不到参数====

以上代码亲测有效,大佬们不喜勿喷。

vue中params与query区别相关推荐

  1. vue中params和query的区别,以及具体用法

    query传递参数会在url后面用?连接起来,且参数之间用&&符号连接然后显示在页面的url中:params传递参数不会显示在页面中:query有点像ajax中的get请求,而para ...

  2. Vue路由params、query参数丢失解决

    在vue中路由传参有两种形式:1.params:2.query 解决办法:sessionStorage或者localStorage 两者的区别:localStorage是永久保存不清除一直存在,ses ...

  3. Vue 中data 和 data() 区别

    Vue 中data 和 data() {return {};}区别 一般简单Vue实例(常见教程视频中) new Vue({el: "#id",data: {message: &q ...

  4. vue中v-model和v-bind区别

    Vue中的数据绑定有三种方式 插值:也就是{{name}}的形式,以文本的形式和实例data中对应的属性进行绑定 v-bind v-model v-model 主要是用在表单元素中,它实现了双向绑定. ...

  5. js中for(const i in/of arr/obj)和vue中v-for指令的区别

    在js中 var obj = {q:'qqq',w:'www',e:'eee'}var arr1 = [{r:'rrr'},{t:'ttt'},{y:'yyy'}]var arr2 = ['uuu', ...

  6. 【原】vue-router中params和query的区别

    1.引入方式不同 query要用path来引入 this.$router.push({path: 'test',query: {type: 2,detail: '哈哈'} }) params要用nam ...

  7. Vue 中computed 与 methods 区别

    1.示例 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF- ...

  8. Vue中methods与computed区别

    核心区别 computed是属性访问,method是函数调用 computed带有缓存功能,method没有 实例: <script>Vue.createApp({data() {retu ...

  9. Vue中 watch 和 computed 区别和使用场景

    在 vue 的项目中,经常用到 watch 和 computed 这两个属性.两个都是数值改变触发改变的属性,他们之间有什么区别? 1.区别 Computed: computed: 是计算属性,依赖其 ...

最新文章

  1. python基础_格式化输出(%用法和format用法)(转载)
  2. vue-awesome-swiper 的使用
  3. java retry(重试) spring retry, guava retrying 详解
  4. 在 Eclipse 3.5中在线安装SVN插件
  5. 海龟绘图小动物_震惊!被塑料绳勒成两半的海龟
  6. 如何使用Create React App DevOps自动化工作中所有无聊的部分
  7. 数据库连接池问题[转]
  8. mats测试所有显存命令_RGBLCD液晶屏层叠显示测试
  9. 操作系统(六) 进程同步
  10. 计算机 软件 什么是算子
  11. 【git体验】git原理及基础
  12. 某大学校园网设计方案大学校园拓扑图 全解
  13. 【控制control】动力学基础
  14. 麻省理工学院公开课,信号与系统: (一) 引言
  15. 手把手教你制作手机底部导航栏,领导看完都说好
  16. C语言动态内存分配:(一)malloc/free的实现及malloc实际分配/释放的内存
  17. 版式设计:什么是“三率一界”?
  18. 飞鸽传书linux运行,Linux下如何安装IPtux飞鸽传书
  19. TongWeb及应用系统安全加固
  20. 丁书苗发家过程披露:结识刘志军后财富增10倍

热门文章

  1. 测试工程师真的35岁就干不动了吗?
  2. 如何查看Crontab任务是否执行
  3. Flowable多实例任务
  4. rpx px 的区别
  5. EasyUI中tree选中父节点自动选中子节点,取消子节点自动取消父节点,子节点勾选完毕自动勾选父节点
  6. 学SLAM的女生,很酷
  7. python绘制并列柱状图_Python之matplotlib画图:并列柱状图、饼图及环形图
  8. 中国移动确定1月5日上市:定价相对合理,能否走出差异化?
  9. 对抗样本(二)L-BFGS
  10. 6. ZigZag Conversion [Medium]