vue-router 路由传参的几种方式,刷新页面参数丢失
常见场景:点击列表详情,跳转到详情内页,传递id参数获取详情数据。
我们先来看看路由跳转的几种方式:
1、通过params方式传参
通过$route.push的path携带参数方式
// 路由配置
{
path: '/detail/:id', //若id后面加?代表这个参数是可选的,即使不传id也不会导致页面无法访问
name: 'detail',
component: Detail
} // 列表中跳转
this.$router.push({
path:`/detail/${id}`
}) // 详情页获取参数
this.$route.params.id
注意:这种方式参数是以/id跟在url后,刷新页面后参数不会丢失。
通过$route.push的params传参
// 列表中跳转
this.$router.push({
name:'detail',
params:{
id:id
}
}) // 详情页获取参数
this.$route.params.id
注意:这种方式的传参,必须使用name进行跳转,未在路由配置:id,url后不会显示id,刷新页面后参数会丢失。
2、通过query方式传参
// 路由配置
{
path: '/detail',
name: 'detail',
component: Detail
} // 列表中跳转
this.$router.push({
path:'/detail',
query:{
id:id
}
}) // 详情页获取参数
this.$route.query.id
注意:这种方式的参数以?id跟在url后,类似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)
注意:这样虽然可以传对象,但是如果数据多的话地址栏会很长(不太推荐)。
3、使用props配合组件路由解耦
// 路由配置
{
path:'/detail/:id',
name:'detail',
component:Detail,
props:true // 如果props设置为true,$route.params将被设置为组件属性
} // 路由跳转
this.$router.push({
path:`/detail/${id}`
}) // 详情页获取参数
export default {
props:['id'], // 将路由中传递的参数id解耦到组件的props属性上
mounted(){
console.log("id",this.id);
}
}
// 路由配置
{
path:'/detail',
name:'detail',
component:Detail,
props:true // 如果props设置为true,$route.params将被设置为组件属性
} // 路由跳转
this.$router.push({
name:'detail',
params:{
order:{
id:'123456789',
name:'商品名称'
}
}
}) // 详情页获取参数
export default {
props:['order'], // 将路由中传递的参数order解耦到组件的props属性上
mounted(){
console.log("order",this.order);
}
}
注意:路由配置中指定参数:id的,页面刷新后参数不会丢失,在路由配置未指定参数的,使用params跳转传参,页面刷新后参数会丢失。
此外,数据量比较大的参数,可以使用sessionStorage或localStorage来进行存储参数来解决页面刷新参数丢失的问题,具体结合实际项目即可。
vue-router 路由传参的几种方式,刷新页面参数丢失的更多相关文章
- vue里面路由传参的三种方式
1.方式一 通过query的方式也就是?的方式路径会显示传递的参数 HTML的方式<router-link :to="{name:xxx,query:{page:1,code:8899 ...
- Vue路由传参的几种方式
原 Vue路由传参的几种方式 2018年07月28日 23:52:40 广积粮缓称王 阅读数 12613 前言:顾名思义,vue路由传参是指嵌套路由时父路由向子路由传递参数,否则操作无效.传参方式 ...
- vue路由传参的三种方式以及解决vue路由传参页面刷新参数丢失问题
最近项目中涉及到跨页面传参数和后台进行数据交互,看到需求之后第一反应就是用路由传参来解决:Vue中给我们提供了三种路由传参方式,下面我们一个一个的来看一下: 方法一:params传参: this.$r ...
- vue路由传参的三种方式区别(params,query)
最近在做一个项目涉及到列表到详情页的参数的传递,网上搜索一下路由传参,结合自己的写法找到一种适合自己的,不过也对三种写法都有了了解,在此记录一下 <ul class="table_in ...
- vue路由传参的三种方式
方式一 通过query方式传参 这种情况下 query传递的参数会显示在url后面 this.$router.push({ path: '/detail', query: { id: id } }) ...
- Vue-router路由传参的三种方式
本文简单介绍下三种路由传参: (1)在路由中配置 { path : ‘/home/:id’, name : ‘Dome’, component } 然后写调用的时候 this.$router.push ...
- vue --- 路由传参的几种方式
方案一: getDescribe(id) { // 直接调用$router.push 实现携带参数的跳转 this.$router.push({ path: `/describe/${id}`, }) ...
- react --- 路由传参的几种方式
1.params 优势 : 刷新地址栏,参数依然存在缺点:只能传字符串,并且,如果传的值太多的话,url会变得长而丑陋. 2.query 优势:传参优雅,传递参数可传对象:缺点:刷新地址栏,参数丢失 ...
- React中使用 react-router-dom 路由传参的三种方式详解【含V5.x、V6.x】!!!
路由传值的三种方式(v5.x) params参数 //路由链接(携带参数): <Link to='/demo/test/tom/18'}>详情</Link> //或 <L ...
随机推荐
- Dockerfile中如何自动回答标准输入的问题
前言大家在用docker build制作自己的image的時候,都会用RUN命令来执行一些操作来安装某些必须的软件. 而一些软件的安装过程中会需要用户来输入yes/no或者y/n来确定一些东西后才能进 ...
- kali 系列学习09-Kali-linux设置ProxyChains
ProxyChains是Linux和其他Unices下的代理工具.它可以使任何程序通过代理上网,允许TCP和DNS通过代理隧道,支持HTTP.SOCKS4和SOCKS5类型的代理服务器,并且可配置多个 ...
- 文件误删了怎么办,EasyRecovery来帮忙
哈喽大家好!又到了年底冲业绩的时候了,每逢这个时候,收拾自己的电脑就和收拾放假一样,令人头秃,不是这个文件丢了,就是那个数据没了,不管您是为论文头秃发愁的学生,还是朝九晚五的上班族,又或者是日进斗金的 ...
- 思维导图软件iMindMap怎么使用
人人都说,思维导图记忆法实用.可是,我们应该如何使用思维导图呢?又该如何从思维小白摇身一变成为逻辑大神呢?俗话说,心急吃不了热豆腐,让我们一步一步来,慢慢接触使用思维导图吧. 小编作为"过来 ...
- 2016年第七届蓝桥杯【C++省赛B组】F、G、H、J 题解
F. 方格填数 #深搜 题意 有\(10\)个格子,填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻),求可能的填数方案数. +--+--+--+ | | | | +--+- ...
- C语言讲义——开发工具Dev C++
20世纪60年代,编程语言界发生"结构化程序设计"变革, 丹尼斯·里奇(Dennis Ritchie)& 肯·汤普森(Ken Thompson)发明C语言,率先建立了面向过 ...
- Beta冲刺随笔——Day_Five
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 团队进行Beta冲刺 作业正文 正文 其他参考文献 无 今日事今日毕 林涛: ...
- 【2020.12.01提高组模拟】A组反思
105,rk45 T1 赛时一开始先打了\(m=0\)的情况,也就是普通的卡特兰数,然后打了暴力,样例过了,把样例改改就不行了,原因没有保证是枚举的是合法的出栈序列 得分:\(WA\&TLE1 ...
- mysql事务原理以及锁
一.Innodb事务原理 1.什么是事务 a.事务(Transaction)是数据库区别于文件系统的重要特性之一,事务会把数据库从一种一致性状态转换为另一种一致性状态. b.在数据库提交时,可以确保要 ...
- Java解决大文件读取的内存问题以及文件流的比较
Java解决大文件读取的内存问题以及文件流的比较 传统方式 读取文件的方式一般是是从内存中读取,官方提供了几种方式,如BufferedReader, 以及InputStream 系列的,也有封装好的如 ...