Vue兄弟组件传值 ------ bus 中央事件总线

之前了解到了父组件传值给子组件(props),子组件传值给父组件($emit),对于兄弟组件间传值是通过他们的父组件作为介质传送的,相当麻烦,现在用bus(一个空的vue对象)作为介质传值更加方便。


第一步:在assert文件夹下创建一个eventBus.js文件

Vue兄弟组件传值 ------ bus 中央事件总线_第1张图片

第二步:在components文件夹下创建一个文件,用来传递数据(触发自定义函数)

Vue兄弟组件传值 ------ bus 中央事件总线_第2张图片

第三步:在components文件夹下创建一个文件,用来接收数据(监听自定义函数)

Vue兄弟组件传值 ------ bus 中央事件总线_第3张图片

第四步:在App.vue里使用这两个组件

Vue兄弟组件传值 ------ bus 中央事件总线_第4张图片

结果:

Vue兄弟组件传值 ------ bus 中央事件总线_第5张图片


补充:像以上引入Bus的方式,经过webpack打包后可能会出现bus局部作用域的情况,就是说引用的不算是同一个bus,最后不能正常通信

解决方法:直接将Bus注入到Vue根对象中

import Vue from 'vue'
const Bus = new Vue()

var app= new Vue({
el:'#app',
   data:{
    Bus
}})
ps: 在子组件中通过this.$root.Bus.$on(),this.$root.Bus.$emit()来调用

你可能感兴趣的:(Vue,web前端)