Vue3从实例中移除了 $on、$off 和 $once 方法,所以我们如果希望继续使用全局事件总线,要通过第三方的库:
Vue3官方有推荐一些库,例如 mitt
1 安装mitt库
npm install mitt
2 封装eventBus.js
import mitt from 'mitt';
const emitter = mitt();
export default emitter;
3 使用事件总线工具
3.1 导入emitter
import emitter from './utils/eventbus';
3.2 触发事件
emitter.emit("event", {name: "code", age: 18});
3.2 监听事件
emitter.on("event", (info) => {
console.log("event:", info);
});
3.3 移除事件监听
所有监听移除
emitter.all.clear()
指定监听移除
function onEvent(){}
emitter.off("event", onEvent);