Vue bus總線,一個輕量級的事件中心,常用於跨組件通信,是Vue.js官方推薦的一種應用程序架構方式。Vue Bus總線提供了想不到的靈活性,可以被用於很多不同場景,在這篇文章中,我會從幾個方面詳細講解Vue Bus總線的用法和原理。
一、Vue Bus總線簡介
Vue Bus總線就是一個事件系統,用於組件之間的通信,值得一提的是,Vue Bus總線既可以當做事件系統使用,也可以當做數據或消息的傳遞中心。Vue Bus總線發起事件的組件成為發送組件,監聽並響應事件的組件成為接收組件。
二、Vue Bus總線實現
Vue Bus總線的實現有很多種,這一節中我們將介紹兩種主要方式。
1. Event Bus
Vue Bus總線的最簡單的實現是通過Event Bus。Event Bus是一個Vue實例,有自己的屬性、方法和生命周期函數,它可以被註冊,也可以被註銷。
const EventBus = new Vue()
// 聲明
EventBus.$on('eventName', (arg) => {
console.log(arg)
})
// 觸發
EventBus.$emit('eventName', 'Hello World!')
2. Provide/Inject
另一種實現方式是使用Vue提供的Provide/Inject,這種方式與Event Bus類似,但是Provide/Inject是使用了Vue自帶的provide和inject選項,可自動化繼承。provide選項是一個函數,返回一個對象作為註冊變量。inject選項可以在嵌套層級即可使用。
const EventBus = {
install(Vue) {
Vue.prototype.$bus = new Vue()
}
}
export default EventBus
// 在發送組件中
methods: {
handleClick() {
this.$bus.$emit('eventName', 'Hello World!')
}
}
// 在接收組件中
inject: ['$bus'],
created() {
this.$bus.$on('eventName', (arg) => {
console.log(arg)
})
}
三、Vue Bus總線應用
1. 父子組件之間的通信
父子組件間通信一般通過props和事件調用實現,但是當嵌套的組件層次很多的時候,這種方式會變得很繁瑣,這時候使用Vue Bus總線會很方便。
// 父組件原創文章,作者:RQAYW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/372525.html