您现在的位置是:首页 > Javascript
当前栏目
Vue路由传参,页面刷新后参数丢失原因与解决方法
2023-03-31 10:39:02 时间
vue路由传参方法
在编写vue项目时,时常会使用路由在不同页面中传递参数,常见使用方式如下:
this.$router.push({
path: "/test",
query: {
a: 1,
b: 2
}
})
这样我们就传递了两个参数,在 /test 页面 就可以接收这两个参数
let a = this.$route.query.a;
let b = this.$route.query.b;
可以看到浏览器进行了url参数拼接传参,有点像get请求的意思
如果不想显示参数拼接在url中,可以使用parmars传参,同时path失效,需要用name指定路由,前提vueRouter中有name对应的路由,才能匹配对应的路径
this.$router.push({
name: "test",
params: {
a: 1,
b: 2
}
})
接收参数方式 与query方式类似
let a = this.$route.parmars.a;
let b = this.$route.parmars.b;
看起来有点像post请求
以上看起来一切正常,但是一旦传递的参数中包含对象之后,问题就出现了
原因分析:
参数传递变为了[object object] ,这个我们非常熟悉,是对象被强制转化为字符串的结果
恍然大悟!原来vue路由传值会把参数都转换为字符串进行拼接,相当于String(参数)
解决方案:
解决方案很简单,就是使用JSON
传递参数时将参数转化为JSON字符串
this.$router.push({
path: "/test",
query: {
a: JSON.stringify({test : 'test}),
b: 2
}
})
接收时再转化为对象
let a = JSON.parse(this.$route.query.a);
let b = this.$routr.query.b;
完美解决
相关文章
- 网站建设涉及到的技术有哪些?
- 深度解析CSS中的单位以及区别
- css列表属性和样式控制
- HTML5(三)——Web 本地存储
- 前端已死?全栈当立?取法于中,仅得其下。
- HTML5(七)——SVG基础入门
- 实现 Vue 的响应式系统
- 学习PM2,从这里开始!
- 关于又拍云免费cdn全网加速服务的长期评测(各种踩坑)
- PM2实时查看Node.js项目的输出日志!
- PM2用Cluster Mode,不用修改代码即可提升Node.js项目性能!
- PM2用环境变量隔离Node.js项目的开发与生产环境!
- PM2用监控模式实时更新Node.js项目!
- 使用 Vue3 编写个管理后台
- PM2用配置文件管理多个Node.js项目!
- PM2让Node.js项目在服务器崩溃重启后,能自启动!
- 在Centos7上将Apache(httpd)切换为Nginx的过程记录
- HTTP 状态码 301 与 302 的区别
- HTTP 协议 Transfer-Encoding
- 一寸宕机一寸血,十万容器十万兵|Win10/Mac系统下基于Kubernetes(k8s)搭建Gunicorn+Flask高可用Web集群