目录
一、引言
前面几个章节我们重点讲解了在Vue中组件的关系类别及父子组件的通信解决方案,本章内容将详细讲解关于非父子组件间的通信解决方案。那么非父子组件的通信我们分为两种:
1.1. event bus 事件总线
作用:非父子组件之间,进行简易消息传递。(复杂场景 → Vuex)
1.1.1. 实现步骤
1. 创建一个都能访问到的事件总线 (空 Vue 实例) → 在utils包下创建EventBus.js
2. A 组件(接收方),监听 Bus 实例的事件
3. B 组件(发送方),触发 Bus 实例的事件
1.2. provide & inject
作用:跨层级共享数据
注:在使用跨层级进行父组件和子孙组件进行共享数据时,能够进行简单数据类型(非响应式)及复杂数据类型(响应式)的共享,但是实际使用过程中,我们建议使用复杂类型来做数据共享,因为该类型的数据是响应式的,因此其他组件在获取使用时能够直接生效。
1.2.1. 实现步骤
1. 父组件 provide 提供数据
2. 子/孙组件 inject 取值使用