今天我們來講一下Vue中的 $bus。$bus是一個基于Vue.prototype定義的全局事件總線,可以在不同的組件之間通信。使用$bus可以減少組件之間的耦合度,為Vue項目的開發提供了方便。
Vue.prototype.$bus = new Vue();
在Vue實例中,我們可以使用$bus.$on()來監聽一個事件,使用$bus.$emit()來觸發一個事件。例如,我們在組件A中監聽一個事件,然后在組件B中觸發這個事件,來進行組件之間的通信。
// 組件A export default { created() { this.$bus.$on('change', this.onChange) }, methods: { onChange() { // 處理事件邏輯 } } } // 組件B export default { methods: { handleClick() { this.$bus.$emit('change') } } }
當然,在組件銷毀時,我們也要及時地將$on監聽的事件取消掉。在Vue的生命周期中,我們可以使用beforeDestroy或者destroyed來取消事件監聽。
// 組件A export default { created() { this.$bus.$on('change', this.onChange) }, beforeDestroy() { this.$bus.$off('change', this.onChange) }, methods: { onChange() { // 處理事件邏輯 } } }
總之,$bus是Vue中一個非常方便的工具,可以幫助我們輕松地實現組件間的通信,提高項目的開發效率。
上一篇vue js配置