vue 3.0 移除了 $on
,$off
和 $once
方法,$emit
仍然是現有 API 的一部分,因為它用於觸發由父組件以聲明方式附加的事件處理程序.
官方推薦使用第三方類庫。 mitt舉例:
1、執行 npm install --save mitt 加載依賴
2、創建bus.js 文件內容如下:(可與main.js同級)
import mitt from 'mitt'
const bus = {}
const emitter = mitt()
bus.$on = emitter.on
bus.$off = emitter.off
bus.$emit = emitter.emit
export default bus
3、main.js 加入內容如下:
import Bus from './bus.js'/// mitt 總線程引入
Vue.prototype.bus = Bus;
4、使用如下:
兄組件:
methods: {
workOrdChange(val) {
let self = this;
self.bus.$emit('dr-workOrd-change', val)
}
}
弟組件:
created() {
let self = this;
self.bus.$on("dr-workOrd-change", (val) => {
let drO = val;
console.log("drO in" + drO);
});
},
完畢!