5、vue组件之间的通信方式

106 阅读1分钟
1)props / $emit 适用 父子组件通信
(2)EventBus ($emit / $on) 适用于 父子、隔代、兄弟组件通信
    这种方法通过一个空的 Vue 实例作为中央事件总线(事件中心),
    用它来触发事件和监听事件,从而实现任何组件间的通信,包括父子、隔代、兄弟组件
(3)Vuex 适用于 父子、隔代、兄弟组件通信  
(4ref 与 $parent / $children 适用 父子组件通信
      + ref:如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;
      如果用在子组件上,引用就指向组件实例
      + $parent / $children:访问父 / 子实例
(5)provide / inject 适用于 隔代组件通信
     祖先组件中通过 provider 来提供变量,然后在子孙组件中通过 inject 来注入变量。  
     provide / inject 主要解决了跨级组件间的通信问题,不过它的使用场景,
     主要是子组件获取上级组件的状态,跨级组件间建立了一种主动提供与依赖注入的关系。
(6)$attrs/$listeners 适用于 隔代组件通信 
     + $attrs:包含了父作用域中不被 prop 所识别 (且获取) 的特性绑定 ( class 和 style 除外 )。
     当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 ( class 和 style 除外 ),
     并且可以通过 v-bind="$attrs" 传入内部组件。
     + $listeners:包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。
     它可以通过 v-on="$listeners" 传入内部组件