当前位置: 首页 > news >正文

vue使用EventBus进行跨组件通信

Vue中的EventBus,又称为事件总线,是一种常用的通信模式,它允许在Vue应用程序的不同组件之间进行松耦合的通信,尤其是对于那些没有直接父子关系的组件间的通信非常有用。EventBus基于Vue的自定义事件系统实现,工作原理遵循发布-订阅模式。

如何使用EventBus:

  1. 初始化EventBus
    首先,你需要创建一个EventBus实例。这通常在一个单独的文件中完成,然后在需要使用EventBus的组件中导入这个实例。

    // eventBus.js
    import Vue from 'vue';
    export const EventBus = new Vue();
    
  2. 发布事件(发送消息)
    在一个组件中,你可以使用EventBus.$emit方法来触发一个事件,并传递数据。

    // 组件A
    import { EventBus } from './eventBus.js';
    EventBus.$emit('eventName', eventData);
    
  3. 订阅事件(接收消息)
    在另一个组件中,使用EventBus.$on方法来监听这个事件,并定义当事件触发时应执行的回调函数。

    // 组件B
    import { EventBus } from './eventBus.js';
    created() {EventBus.$on('eventName', this.handleEventData);
    },
    methods: {handleEventData(eventData) {console.log('Received data:', eventData);}
    },
    beforeDestroy() {// 清理事件监听,防止内存泄漏EventBus.$off('eventName', this.handleEventData);
    }
    

注意点:

  • 避免滥用:虽然EventBus提供了便捷的跨组件通信方式,但过度使用可能导致代码结构混乱,难以维护。对于复杂的通信逻辑,考虑使用 Vuex 状态管理器。
  • 内存泄漏:记得在组件销毁时移除不必要的事件监听器,以防止内存泄漏。可以使用beforeDestroydestroyed生命周期钩子来做这件事。
  • 命名规范:为事件命名时,应保持清晰且具有描述性,以避免事件名冲突和混淆。

EventBus提供了一种简单的方式来解耦组件间通信,适用于小型到中型项目,或者是在不希望引入 Vuex 等重型状态管理方案时的临时解决方案。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android刮刮卡自定义控件
  • Oracle按照主键排序分页sql
  • 2.Redis之Redis的背景知识
  • 可选链与空值合并运算符的妙用
  • C++进阶之路:何为运算符重载、赋值运算符重载与前后置++重载(类与对象_中篇)
  • python:大文件分批/块导入数据库方式记录
  • 富格林:可信方法防备暗箱操作
  • 与神对话-1
  • 面试中算法(A星寻路算法)
  • tomcat--安全配置多虚拟机
  • 2024年,游戏行业还值得进入吗?
  • 在ARM开发板上,栈大小设置为2MB(常用设置)里面存放的数据
  • 盲人社区生活支持体系:织就一张温暖的网
  • 蓝桥杯嵌入式国赛笔记(2):拓展板按键程序设计
  • pwa动态修改manifest.json(start_url)
  • 分享一款快速APP功能测试工具
  • 「译」Node.js Streams 基础
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • css的样式优先级
  • HTTP那些事
  • If…else
  • Mysql5.6主从复制
  • React16时代,该用什么姿势写 React ?
  • SSH 免密登录
  • VUE es6技巧写法(持续更新中~~~)
  • 阿里云前端周刊 - 第 26 期
  • 技术胖1-4季视频复习— (看视频笔记)
  • 来,膜拜下android roadmap,强大的执行力
  • 类orAPI - 收藏集 - 掘金
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何编写一个可升级的智能合约
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 我的业余项目总结
  •  一套莫尔斯电报听写、翻译系统
  • nb
  • PostgreSQL之连接数修改
  • ​Redis 实现计数器和限速器的
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • #07【面试问题整理】嵌入式软件工程师
  • #每日一题合集#牛客JZ23-JZ33
  • (10)STL算法之搜索(二) 二分查找
  • (4.10~4.16)
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (LLM) 很笨
  • (定时器/计数器)中断系统(详解与使用)
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (四)linux文件内容查看
  • (转) Android中ViewStub组件使用
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .Net 6.0--通用帮助类--FileHelper
  • .net 7和core版 SignalR
  • .Net Core 微服务之Consul(三)-KV存储分布式锁