首页 > 其他分享 >vue3-事件总线

vue3-事件总线

时间:2024-11-27 10:25:50浏览次数:6  
标签:mitt 总线 message 事件 vue3 EventBus event

事件总线的概念:

事件总线(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)
  });
});

标签:mitt,总线,message,事件,vue3,EventBus,event
From: https://www.cnblogs.com/axingya/p/18571703

相关文章

  • 芯片基础详解:总线、256字节随机存储器、模式选择器(指令解码器)、条件判断器
    总线总线:从正确的输入端将数值复制到正确的输出端。总线电路------------------------------------------------------------------------------------------256字节随机存储器256字节随机存储器电路---------------------------------------------------------------......
  • vue3+vite打包配置,并部署nginx,解决部署之后axios请求跨域
    配置base配置base避免打包部署到服务器上后可能会报404,无法正确的获取的资源。//vite.config.tsexportdefaultdefineConfig({ base:"./"})配置路径别名//vite.config.tsimport{defineConfig}from"vite";importvuefrom"@vitejs/plugin-vue";//配置组件路......
  • vue3-setup基本使用(非响应式数据)
    OptionsAPI与COmpositionAPI选项式APiVue2的AP设计是Options(配置、选项式)风格的Options类型的API,数据、方法、计算属性等,是分散在:data、methods、computed中的,若想新增或者修改一个需求,就需要分别修改:data、methods、computed,不便于维护和复用组合式APIVue3的API设计......
  • Vue3医院陪诊全栈项目
    02环境配置和项目搭建(1)下载npm1.1.12版本 https://nvm.uihtm.com(2)安装node.js vscode里进行终端调试:>nvm>nvminstall20.16.0 (通过nvm下载要用的node.js版本,本项目使用的node.js版本为20.16.0)>nvmlist (查看当前下载的依赖)>nvmuse20.16.0 (切换到指定的nod......
  • vue3 带图片的提交按钮
    一、界面元素<el-formv-loading="isLoading":model="editForm"ref="ruleFormRef":rules="rules"label-width="120px"><el-row><el-col:span="12">......
  • 网页“事件循环”Event Loop究竟是什么?
    网页“事件循环”EventLoop通常指的是浏览器如何管理和执行JavaScript中的异步任务,包括事件处理、网络请求、定时器等。这个机制的核心概念是“事件循环”(EventLoop)。理解事件循环对于编写高效的JavaScript代码至关重要,特别是在处理异步操作时。事件循环的基本概念调用栈(Cal......
  • 五、基于 Guava EventBus事件驱动架构实现动态扩展的技术方案
    构建动态可扩展的事件驱动架构:基于GuavaEventBus的实践在现代应用开发中,模块解耦与动态扩展是关键需求,而事件驱动架构提供了一种高效、优雅的解决方案。本文将以GoogleGuava的EventBus为例,详细讲解如何构建动态可扩展的事件驱动架构,并进行优化设计。1.什么是事......
  • Nuxt.js 应用中的 webpack:done 事件钩子
    title:Nuxt.js应用中的webpack:done事件钩子date:2024/11/26updated:2024/11/26author:cmdragonexcerpt:webpack:done钩子用于处理Webpack编译完成后的逻辑。在Webpack编译的所有任务完成后,这个钩子会被调用,通常用于通知开发者编译的状态、执行清理工作或作为......
  • 看不懂来打我,Vue3的watch是如何实现监听的?KN
    合集-vue3源码(5)1.Vue3.5新增的baseWatch让watch函数和Vue组件彻底分手08-262.Vue3.5中解构props,让父子组件通信更加丝滑09-183.让性能提升56%的Vue3.5响应式重构之“版本计数”11-064.揭秘!Vue3.5响应式重构如何让内存占用减少56%11-135.看不懂来打我,Vue3的watch是如何实现监听......
  • input的onblur和onchange事件区别是什么?
    onblur和onchange都是HTML元素的事件属性,用于处理用户与表单元素交互时的不同情况。它们的主要区别在于触发时机和触发条件:onblur(失去焦点):当一个元素失去焦点时触发。这意味着当用户点击页面上其他元素、按下Tab键切换到下一个元素或使用鼠标点击到其他地方时,都会......