Vue中比Vuex更简单的组件间通信,子组件与子组件通信

如果2个组件不是父子组件那么如何通信呢?

这时可以通过eventHub来实现通信,
所谓eventHub就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件。(或者使用vuex)

new Vue({
  el: '#app',
  data: {
    eventHub: new Vue()
  }
})

然后通过this.$root.eventHub获取,下面代码简写为eventHub。

组件1触发:

<div @click="eve"></div>
methods: {
    eve() {
        eventHub.$emit('change', params); //eventHub触发事件
    }
}

组件2接收:

<div></div>
created() {
    eventHub.$on('change', (params) => { //eventHub接收事件
    });
}

这样就实现了非父子组件之间的通信了,原理就是把Hub当作一个中转站!

posted @ 2017-09-21 15:44  李大白程序员  阅读(450)  评论(0编辑  收藏  举报