关于vue.js:router和route的区别路由跳转方式name-path-和传参方式params-query的区别

一、$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下面显示出你的参数,并且当你跳到别的页面或者刷新页面的时候参数会失落,要怎么解决?

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理