vue 朝花夕拾系列(9)- 组件通信路由传参

vue 朝花夕拾系列(9)主要收录的就是vue组件间通信的几种方式,如
1.props、$emit/$on
2.vuex
3.$parent/$children
4.$refs
5.$root
6.$attrs/$listeners
7.provide/inject
8.中央事件bus(eventBus)
9.路由传参

本文主要阐述第九种:通过router可以携带参数跳转页面的方式实现数据共享…

路由传参

  • vue router 一般传递参数有两种方式:通过this.$router.push的方式尽心路由跳转,然后再query和params参数中传递数据
  • 注意:传参是this.$router,接收参数是this.$route,这里千万要看清了!!!

this.$router 和this.$route有何区别?

在控制台打印两者可以很明显的看出两者的一些区别:
1.$router为VueRouter实例,想要导航到不同URL,则使用$router.push方法
2.$route为当前router跳转对象,里面可以获取name、path、query、params等

query方式传参和接收参数

  • 传递传参:
1
2
3
4
5
6
this.$router.push({
path:'/xxx',
query:{
id:id
}
})
  • 接收参数:
1
this.$route.query.id

params方式传参和接收参数

  • 传递传参:
1
2
3
4
5
6
this.$router.push({
name:'xxx',
params:{
id:id
}
})
  • 接收参数:
1
this.$route.params.id

注意:

  • params传参,push里面只能是 name:’xxxx’,不能是path:’/xxx’,因为params只能用name来引入路由,如果这里写成了path,接收参数页面会是undefined!!!
  • 另外,二者还有点区别,直白的来说query相当于get请求,页面跳转的时候,可以在地址栏看到请求参数,而params相当于post请求,参数不会再地址栏中显示
  • 页面刷新的话,query参数还在url里面存在,params参数就不存在了
初到贵宝地,有钱的给个钱场,没钱的挤一挤给个钱场