Vue兄弟组件通讯的三种方式

1、子传父,而后父传子

2、Vuex

3、建立一个事件总线

前两种方式官方文档十分详尽再也不赘述,只在这里简述一下第三种方式的思路。
由于$on和$emit的事件必须是在一个公共的实例上才能触发。那么咱们能够新建一个Vue实例看成事件总线,达到能够无论组件之间的父子关系,都能经过这个实例通讯的目的
事件总线eventBusvue

一、新建eventBus.js

import Vue from 'vue'

export default new Vue()

二、Component1.vue里监听事件

import eventBus from './eventBus'
//...
created () {
  eventBus.$on('my-event', args => {
  //...
  }) 
}

三、Component2.vue中触发事件

import eventBus from './eventBus'
//...
watch: {
  list(newValue, oldValue) {
    eventBus.$emit('my-event', newValue)
  }
}

4、完

相关文章
相关标签/搜索