自己之前也查看vue-bus插件里的源码封装,其实基于vue的实例,实现全局可以调用
o
n
,
on,
on,once,$ off,$emit,其实自己也可以手动封装,但是感觉这个插件也不大,所以为了效率直接下载进项目里面。
下面介绍它的几个主要用法:
全局定义的事件是不会跟随组件的生命周期函数进行状态改变的。切换路由时,如果不手动清除事件的话,它会注册多次。
created() {
//手动清除事件
this.bus.$off('clickBus');//在每次创建事件之前,手动清除定义的事件(根据实际的业务需求也可以在beforeDestroy()和destroyed())
},
mounted(){
this.bus.$on('clickBus', (e) => {});
}
//或者可以在beforeDestory的写
beforeDestroy () {
bus.$off('get', this.myhandle)
},
其实之前的我们用this. o n , t h i s . on,this. on,this.emit是我们子组件传给父组件的一种方式,只不过vue-bus将它拓展为全局而已。
参考的链接:
https://my.oschina.net/u/3547207/blog/1840760
https://www.cnblogs.com/chenhuichao/p/10122264.html