vue總線機制(bus)
vue中非父子組件之間通信除了使用vuex,也可以通過bus總線,兩者適用場景不同,
bus適合小專案、資料被更少組件使用的專案,對于中大型專案 資料在很多組件之間使用的情況 bus就不太適用了,bus其實就是一個發布訂閱模式,利用vue的自定義事件機制,在觸發的地方通過$emit向外發布一個事件,在需要監聽的頁面,通過$on監聽事件,
vuex適用中大型專案、資料在多組件之間公用的情況,
組件通信bus的使用
在utils檔案下下創建bus.js
// utils - bus.js
import Vue from 'vue'
const bus = new Vue()
export default bus
一、傳值
發送資訊
import bus from '@/utils/bus'
第一個引數為標志變數,第二個引數為通信的值
us.$emit('message', 'hello');
接收資訊
import bus from '@/utils/bus'
第一個引數為標志變數,第二個引數中的e為通信的值
bus.$on('message', (e) => {
console.log(e)
})
二、呼叫方法
一個組件(A)呼叫另一個組件(B)的方法
B組件的方法
import bus from '@/utils/bus'
mounted () {
bus.$on('testA', this.testA)
},
testA () {
console.log('由A組件呼叫')
}
A組件呼叫
import bus from '@/utils/bus'
mounted () {
bus.$emit('testA')
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/270883.html
標籤:其他
