一、$router和$route的区别
$router : 是路由操作对象,只写对象
$route : 路由信息对象,只读对象
//$router操作 路由跳转
// 字符串
this.$router.push('home')
// 对象
this.$router.push({ path: 'home' })
// 命名的路由
this.$router.push({ name: 'user', params: { userId: 123 }})
// 带查问参数,变成 /register?plan=123
this.$router.push({ path: 'register', query: { plan: '123' }})
//$route读取 路由参数接管var name = this.$route.params.name;
二、params 、query的区别
1.this.$route.query的应用
A、传参数:
this.$router.push({
path: '/monitor',
query:{
id:id,
}
})
B、获取参数:
this.$route.query.id
C、在url中模式(url中带参数)
http://172.19.186.224:8080/#/monitor?id=1
D、页面之间用路由跳转传参时,刷新跳转后传参的页面,数据还会显示存在(我的项目中遇到此问题)
2.this.$route.params的应用
A、传参数:
this.$router.push({
name: 'monitor',
params:{
id:id,
}
})
B、获取参数:
this.$route.params.id
C、在url中模式(url中不带参数)http://172.19.186.224:8080/#/monitor
D、页面之间用路由跳转传参时,刷新跳转后传参的页面,数据不存在(我的项目中遇到此问题)
三、name 、 path的区别
path 和 Name路由跳转形式,都能够用query传参
path路由跳转形式,params传参会被疏忽,只能用name命名的形式跳转
params传参,push外面只能是 name:’xxxx’,不能是path:’/xxx’,因为params只能用name来引入路由,如果这里写成了path,接管参数页面会是undefined!!!
另外,二者还有点区别,直白的来说query相当于get申请,页面跳转的时候,能够在地址栏看到申请参数,而params相当于post申请,参数不会再地址栏中显示
留神:params传参如果路由下面不写参数,也是能够传过来的,但不会在url下面显示出你的参数,并且当你跳到别的页面或者刷新页面的时候参数会失落,要怎么解决?
发表回复