Vue中的传值方式
参考: https://blog.csdn.net/qq_35430000/article/details/79291287
1.路由传参
两页面要有路由跳转,在路由跳转的时候通过query把数据传给B组
this.$router.push({ path: '/conponentsB', query: { id: 123 } })
在B组件获取传来的数据
this.$route.query.id
2.通过本地存储传递(sessionStorage,localStorage)
sessionStorage使用需要在浏览器同一会话内,页签或者浏览器关闭都会删除.localStorage存储整个网站数据,无过期时间,直到手动删除.存储的数据为字符串
sessionStorage.setItem('TOKEN', token)
获取数据
let token= sessionStorage.getItem("TOKEN");
3.父子组件传值
a.父组件往子组件传值通过props
父组件传值
子组件接收
{{sonId}}
b.子组件往父组件传值 $emit
子组件触发传值
父组件接收
通过父子组件的相互传值,还可以利用父组件的中转,实现兄弟组件传值
4.事件总线 evenBus
创建.js文件
// eventBus.js import Vue from 'vue' export const EventBus = new Vue()
发送数据
接收消息
{{msg}}
主要使用方法为:
// 发送消息 EventBus.$emit(channel: string, callback(payload1,…)) // 监听接收消息 EventBus.$on(channel: string, callback(payload1,…))
5.状态管理(vuex,pinia)
6.$arrts 和 $listenter
7.inject 和 provide
8.$ref $parent
$ref可用于父组件调用子组件方法,变量
父组件
子组件
$parent可用于子组件调用父组件方法,变量
父组件
子组件
9.$attrs inheritAttrs $listenters