Vue-EventBus心得

作者: 念念碎平安夜 | 来源:发表于2019-04-25 17:11 被阅读102次

Case 1:

1、新建event.js文件,初始化

// event-bus.js
importVuefrom 'vue'
exportconstEventBus = newVue()

2、在发送以及接收的组件中都引入此 event.js

import {
    EventBus
}from "../event-bus.js";

3、发送组件加入代码

EventBus.$emit("hello", this.number);

4、接收组件加入代码

EventBus.$on("hello", (number) = > {
    console.log(number)
});

Case 2:

直接在项目中的main.js初始化EventBus,具体发送、接收,同上Case1

// main.js
Vue.prototype.$EventBus = new Vue()

Case3:

解释说明:中央事件总线bus,其作为一个简单的组件传递事件,用于解决跨级和兄弟组件通信的问题,将其封装为一个Vue的插件,那么就可以在组件之间使用,而不需要导入bus

1、新建目录vue-bus,在目录里新建vue-bus.js文件,具体代码如下:

//vue-bus.js
const install = function(Vue) {
    const Bus = new Vue({
        methods: {
            emit(event, ...args) {
                this.$emit(event, ...args);
            },
            on(event, callback) {
                this.$on(event, callback);
            },
            off(event, callback) {
                this.$off(event, callback);
            }
        }
    });
    Vue.prototype.$bus = Bus;
};
export default install;

注:emit(event,...args)中的...args是函数参数的解构,因为不知道组件会传递多少个参数进来,使用...args可以把当前参数到最后的参数全部获取到。

2、在main.js中使用插件:

//main.js
import VueBus from './vue-bus/vue-bus';
Vue.use(VueBus);

3、发送组件加入代码

this.$bus.emit('hello',this.number,this.number2);

4、接收组件加入代码

this.$bus.on('hello', (number, number2) = > {
    console.log(number)
    console.log(number2)
})

综上所述,对于Case3的方式,通过插件的形式使用后,所有的组件都可以直接使用$bus,不需要每一个组件都导入bus组件。

有两点需要注意:
1、$bus.on应该在created钩子内使用,如果在mounted使用,有可能接收不到其他组件来自created钩子内发出的事件。

2、使用了$bus.on,在beforeDestroy钩子里应该再使用$bus.off解除,因为组件销毁后,没有必要把监听句柄存储在vue-bus里了。

beforeDestroy() {
    this.$bus.off('hello', something);
}

相关文章

  • Vue-EventBus心得

    Case 1: 1、新建event.js文件,初始化 2、在发送以及接收的组件中都引入此 event.js 3、发...

  • vue-eventbus

    eventbus就是事件总线,用来处理组件传值的一种方式,用法如下:

  • 6月心得体会

    心得 心得心得信么信么心得?! 该心得体会 心得 心得

  • 宝妈育儿心得

    宝妈育儿心得宝妈育儿心得宝妈育儿心得宝妈育儿心得宝妈育儿心得宝妈育儿心得宝妈育儿心得宝妈育儿心得宝妈育儿心得宝妈育...

  • 2018-06-28

    黑木头(一)6.28 静心 读书心得1 读书心得2 读书心得3 大花脸1 读书心得4 读书心得5 读书心得6

  • 姚芷墨《抉择》读书心得

    7.18 读书心得 8.1 读书心得

  • 2019-04-06

    化妆过程与心得 兼职过程与心得

  • 我为什么要分享"学习心得"?—写心得的&qu

    在分享几篇书籍阅读的心得,几篇课程参与的心得,几篇聆听演讲的心得后,开始有人问我:”为什么你要分享这些心得?”对喔...

  • 关于女人敷面膜,到……

    女人天生爱美,但也天生爱偷懒。 每个美女的后面都有一堆的护肤心得,化妆心得,穿衣心得,拍照心得等等…… 我也爱美。...

  • 《 没有自由,哪来的丰盛?》

    ——梦想蓝图课心得 这是一篇心得,这是一篇心得,这是一篇心得。。。 “诶,欣频老师的课笔记还有么?” “有啊,记了...

网友评论

    本文标题:Vue-EventBus心得

    本文链接:https://www.haomeiwen.com/subject/ksgzgqtx.html