Vue Bus是一種組件通信機制,它允許子組件和父組件之間傳遞數據,它是一種解耦合的設計方式。當我們將應用程序拆分為多個組件時,它們之間需要進行通信,此時我們可以使用Vue Bus。
Vue Bus工作原理如下:當一個子組件需要向父組件傳遞數據時,它將阻止事件并觸發事件,父組件從該事件中檢索數據。如果父組件必須通知孩子,那么反之亦然。Bus相當于中心事件處理程序,允許組件通過一對訂閱發布事件交換數據。
var bus = new Vue() bus.$emit('envAge',27) export default { data(){ return {...} }, created(){ bus.$on('envAge',(age)=>{ console.log('年齡是:'+ age) }) } }
在這個例子中,我們神秘地創造了一個新的Vue實例來充當我們的bus。使用Vue的$emit函數來觸發相應的事件,然后使用Vue的$on方法來監聽這些事件。這里的envAge稱為事件的名稱,其他地方可以使用相同的事件名稱。
在另一個組件中,你可以這樣做:
import bus from '@/utils/bus' export default { data(){ return {...} }, created(){ bus.$on('envAge',(age)=>{ console.log('年齡是:'+ age) }) bus.$emit('envAge',27) } }
在這個例子中,我們首先導入我們創建的bus,然后使用$on方法監聽事件,然后使用$emit方法發出事件。將數據傳遞給事件很容易。這是一個非常簡單的示例,它演示了Vue Bus如何在組件之間通信。您可以更改事件名稱,將更多數據傳遞給事件并建立更復雜的應用程序。
總之,在Vue的組件通信中,總會遇到難題,Vue Bus作為派發和訂閱的一個中央事件管理器,解決了這些難題,簡單易用,而且不需要太多的代碼量就可以實現相互通信,很方便。