自己之前也查看vue-bus插件裏的源碼封裝,其實基於vue的實例,實現全局可以調用once,$ off,$emit,其實自己也可以手動封裝,但是感覺這個插件也不大,所以爲了效率直接下載進項目裏面。
下面介紹它的幾個主要用法:
全局定義的事件是不會跟隨組件的生命週期函數進行狀態改變的。切換路由時,如果不手動清除事件的話,它會註冊多次。
created() {
//手動清除事件
this.bus.$off('clickBus');//在每次創建事件之前,手動清除定義的事件(根據實際的業務需求也可以在beforeDestroy()和destroyed())
},
mounted(){
this.bus.$on('clickBus', (e) => {});
}
//或者可以在beforeDestory的寫
beforeDestroy () {
bus.$off('get', this.myhandle)
},
其實之前的我們用this.emit是我們子組件傳給父組件的一種方式,只不過vue-bus將它拓展爲全局而已。
參考的鏈接:
https://my.oschina.net/u/3547207/blog/1840760
https://www.cnblogs.com/chenhuichao/p/10122264.html