如何处理vue router 路由传参刷新页面参数丢失
概述
常见场景点击列表的详情,跳转到详情内页,在内页根据传递的参数获取详情数据。
路由传参一般有如下几种方式,狼蚁网站SEO优化主要介编程式导航 router.push 的传参方式
方法一通过 params 传参
路由配置如下
{ path: '/detail/:id', //若id后面加?代表这个参数是可选的 name: 'detail', ponent: Detail }
通过 $router.push 中 path 携带参数的方式
// 列表中的传参 goDetail(row) { this.$router.push({ path: `/detail/${row.id}` }) } // 详情页获取参数 this.$route.params.id
通过 $router.push 的 params 传参
// 列表页传参 goDetail(row) { this.$router.push({ name: 'detail', params: { id: row.id } }) } // 详情页获取 this.$route.params.id
注这种方式的传参,路径用 name,路径用 name,路径用 name , 用 path 会获取不到;如果在路由配置中没有添加 /:id即 path: 'detail',url 中不会显示 id,在详情页还是可以拿到参数 id,但刷新后参数丢失。
以上这两种方式,传递的参数 id 会在 url 后面显示,如图
传递的参数会暴露在网址中。
如果在路由中设置了params参数 /:id,在跳转的时候没有传递参数,会导致页面没有内容或跳转失败,可在后面加 ?代表这个参数是可选的,即 /:id?
方法二通过 query 传参
// 路由配置 { path: '/detail', name: 'detail', ponent: Detail } // 列表页 goDetail(row) { this.$router.push({ path: '/detail', query: { id: row.id } }) } // 详情页 this.$route.query.id
注这种方式传递的参数会在地址栏的 url 后面显示 ?id=?,类似于 get 传参;query 必须配合 path 来传参。
传递的参数是对象或数组
还有一种情况就是,如果通过 query 的方式传递对象或数组,在地址栏中会被强制转换成 [object Object],刷新后也获取不到对象值。
此时可以通过 JSON.stringify() 方法将要传递的参数转换为字符串传递,在详情页再通过 JSON.parse() 转换成对象。
let parObj = JSON.stringify(obj) this.$router.push({ path: '/detail', query: { 'obj': parObj } }) // 详情页 JSON.parse(this.$route.query.obj)
这个方法虽然可以传递对象,若数据少还好,数据多的话地址栏就很长了
注意在所有的子组件中获取路由参数是 $route不是 $router
以上 params 和 query 传参方式对比
- 通过 $router.push 的 params + name 传参,若路由中没有设置params参数,参数不会拼接在路由后面,页面刷新参数会丢失。
- 通过 $router.push 中 path 携带参数或通过 query 传参,参数会拼接在地址后面,会暴露信息。
方法三使用 props 配合组件路由解耦
// 路由配置 { path: '/detail/:id', name: 'detail', ponent: Detail, props: true // 如果props设置为true,$route.params将被设置为组件属性 } // 列表页 goDetail(row) { this.$router.push({ path: '/detail', query: { id: row.id } }) } // 详情页 export default { props: { // 将路由中传递的参数id解耦到组件的props属性上 id: String }, mounted: { console.log(this.id) } }
,还可以通过把参数存在 sessionStorage 或 localStorage 中来解决页面刷新参数丢失的问题,具体结合实际项目即可。
以上就是如何处理vue router 路由传参刷新页面参数丢失的详细内容,更多关于vue的资料请关注狼蚁SEO其它相关文章!
编程语言
- 甘肃哪有关键词排名优化购买方式有哪些
- 甘肃SEO如何做网站优化
- 河南seo关键词优化怎么做电话营销
- 北京SEO优化如何做QQ群营销
- 来宾百度关键词排名:提升您网站曝光率的关键
- 卢龙关键词优化:提升您网站排名的策略与技巧
- 山东网站优化的注意事项有哪些
- 四川整站优化怎样提升在搜索引擎中的排名
- 疏附整站优化:提升网站性能与用户体验的全新
- 海南seo主要做什么工作售后服务要做到哪些
- 荣昌百度网站优化:提升您网站的搜索引擎排名
- 河北seo网站排名关键词优化如何做SEO
- 江西优化关键词排名推广售后保障一般有哪些
- 古浪SEO优化:提升你的网站可见性
- 西藏网站排名优化怎么把网站排名在百度首页
- 如何提升阳东百度快照排名:详尽指南