vue3-事件总线

事件总线的概念:

事件总线(Event Bus)可以理解为一个全局的发布/订阅模式,可以通过它来实现不同组件之间的消息传递。在Vue实例或Vue组件中充当一个中央枢纽,通过它可以让一个组件发出事件,而其他组件监听并响应这些事件

事件总线的创建

Vue3版本中,我们不再使用new Vue()来创建事件总线,而是通过mitt库,该库轻量且专注于事件总线功能。

npm install mitt

创建事件总线文件:

// src/EventBus.js
import mitt from 'mitt';

const emitter = mitt();

export default emitter;

发送事件

import EventBus from '@/utils/EventBus';

sendMessage() {
  // 有时由于执行顺序的原因,可能需要考虑微任务宏任务问题,可用setTimeout解决
  EventBus.emit('custom-event', { message: 'Hello' });
}

监听事件

import EventBus from '@/utils/EventBus';

// 接受方式1:
created() {
  EventBus.on('custom-event', this.handleCustomEvent);
},
beforeUnmount() {
  EventBus.off('custom-event', this.handleCustomEvent);
},

methods: {
  handleCustomEvent(payload) {
    this.receivedMessage = payload.message;
  }
}
// 接受方式2:
onMounted(() => {
  EventBus.on('custom-event', (message) => {
    handleBlur(message)
  });
});
posted @   seekHelp  阅读(297)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2023-11-27 vue导入excel表格
2023-11-27 半圆形进度条(vue加强版)
点击右上角即可分享
微信分享提示