组件通信的8种方法

81 阅读1分钟
  1. 本地存储(sessionStorage和localStorage)
存:sessionStorage.setItem(键,值)
取:sessionStorage.getItem(键)
// 注意sessionStorage和localStorage的不同点

2. props和emit

// 子组件:通过props拿到父组件传过来的数据,通过emit告知父组件对props值改变
// 父组件:接到子组件的emit回调进行处理
//注意:此方法适用于单纯父子两代通信,若存在多代则处理会比较麻烦

3. vuex

// vuex适用于多组件之间的资源共享,使用简单,但是同步和异步处理分开了,在vue3中的pina对此不做区分

  1. ref
父组件给子组件绑定ref即可以拿到子组件的实例对象,并调用子组件里定义的属性和方法,但是在vue3中需要子组件通过defineExpose暴漏的才可以被父组件调用

5. provide和inject(依赖注入)

provide(键,值)
inject(键)

// 祖父组件可以通过这种方式共享自己的一些属性和方法

6. 事件总线 7. 订阅与发布

// 一种组件间通信的方式,适用于任意组件间通信
使用步骤:
1.  安装pubsub:npm i pubsub
2. 引入:import pubsub from 'pubsub-js'
3. 接收数据:A组件想要接收数据,则在A组件中订阅消息,订阅回调留在A组件自身
mounted(){
	this.pid = pubsub.subscribe ('xxx', (订阅名,接收的数据)=>{
	函数体
	})
}
4. 提供数据
pubsub.publish('订阅名',发送的数据)
5. 最好在beforDestroy钩子中,用PubSub.unsubscribe(pid)去取消订阅
beforDestroy(){
PubSub.unsubscribe(pid)
}


  1. 混入