vue3无插件使用事件总线
时间: 2024-11-20 15:05:34 浏览: 7
在Vue3中,如果没有使用专门的插件,你可以通过创建一个全局的`EventBus`或者`Hub`来实现实例间的通信,特别是在单文件组件(SFC)之间。这是一种简单的中心化事件管理机制,通常用于处理应用程序状态的变化、数据共享或者跨组建之间的交互。
以下是一个基本的无插件版的Vue3事件总线实现:
```javascript
// 创建一个名为eventBus的对象
const eventBus = new Vue();
// 定义全局事件发射方法
eventBus.$on = (type, callback) => {
eventBus.$once(type, onceCallback => {
eventBus.$off(type, onceCallback);
return onceCallback;
});
return function(...args) {
eventBus.$emit(type, ...args);
};
};
// 定义全局事件监听方法
eventBus.$emit = (type, ...args) => {
for (let subscriber of eventListeners[type]) {
subscriber(...args);
}
};
// 注册事件监听者
eventBus.$on('eventType', handler);
// 发射事件
eventBus.$emit('eventType', data);
// 移除事件监听
eventBus.$off('eventType', handler);
// 仅触发一次的事件监听
eventBus.$once('eventType', data => {
// 这里可以执行一次性操作
});
```
阅读全文