069:vue中EventBus的使用方法(图文示例)

news2024/9/29 7:02:44

在这里插入图片描述

第069个

查看专栏目录: VUE ------ element UI


本文章目录

    • 示例背景
    • 示例效果图
    • 示例源代码
      • 父组件:
      • 子组件A:
      • 子组件B:
      • eventbus/index.js:
    • EventBus的基本使用方法:

示例背景

在Vue中,使用EventBus可以实现组件间的通信,如何使用EventBus? 都需要做哪些配置呢?他的注意事项是什么呢?请参考以下示例及使用步骤。

示例效果图

在这里插入图片描述

示例源代码

父组件:

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-02-03
*/

<template>
	<div class="djs-box">
		<div class="topBox">
			<h3>vue使用EventBus的图文示例 </h3>
			<div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
		</div>
		<div class="dajianshi">
			<div class="item">
               <ComA></ComA>
			</div>
			<div class="item">
			   <ComB></ComB>
			</div>
		</div>
	</div>
</template>

<script>
	import ComA from '../components/eventbus/demo-A.vue';
	import ComB from '../components/eventbus/demo-B.vue'
	export default {
		data() {
			return {}
		},
		components:{
			ComA,
			ComB
		},
	}
</script>
<style scoped>
	.djs-box {
		width: 1000px;
		height: 650px;
		margin: 50px auto;
		border: 1px solid peru;
	}

	.topBox {
		margin: 0 auto 0px;
		padding: 10px 0 20px;
		background: peru;
		color: #fff;
	}

	.dajianshi {
		width: 98%;
		height: 480px;
		margin: 5px auto 0;
		display: flex;
		justify-content: space-between;
		
	}
	.item{
		width: 48%;
		height: 480px;
		margin-top: 20px;
		text-align: center;
		border: 1px solid #583;		
	}
</style>


子组件A:

<template>
	<div>
		<h2> 组件A</h2>
		<el-button @click="sendMessage">发送消息给B</el-button>
		<h4>B获取的消息:</h4>
		<div style="color: blue;">{{message}}</div>
	</div>
</template>

<script>
	import {
		EventBus
	} from '@/eventbus/index.js';

	export default {
		data() {
			return {
				message: ''
			};
		},
		mounted() {
			EventBus.$on('messageB', (msg) => {
				this.message = msg;
			});
		},
		methods: {
			sendMessage() {
				EventBus.$emit('messageA', 'Hello from Component A');
			}
		}
	}
</script>

子组件B:

<template>
	<div>
		<h2> 组件B</h2>

		<el-button @click="sendMessage">发送消息给A</el-button>
		<h4>A获取的消息:</h4>
		<div style="color: red;">{{ message }}</div>
	</div>
</template>

<script>
	import {
		EventBus
	} from '@/eventbus/index.js';

	export default {
		data() {
			return {
				message: ''
			};
		},
		mounted() {
			EventBus.$on('messageA', (msg) => {
				this.message = msg;
			});
		},
		methods: {
			sendMessage() {
				EventBus.$emit('messageB', 'Hello from Component B');
			}
		}
	}
</script>

eventbus/index.js:

import Vue from ‘vue’;
export const EventBus = new Vue();

EventBus的基本使用方法:

  • List item初始化EventBus:首先需要创建一个EventBus实例。可以通过创建一个新的.js文件(如event-bus.js),然后导入Vue并实例化一个新的Vue对象来创建EventBus。或者,可以直接在项目的main.js文件中初始化EventBus。
  • 发送事件:要向EventBus发送事件,可以使用 e m i t 方 法 。 例 如 , t h i s . emit方法。例如,this. emitthis.EventBus.$emit(‘eventName’, payload),其中eventName是事件名,payload是要传递的参数。
  • 监听事件:要在组件中监听EventBus上的事件,可以使用 o n 方 法 。 例 如 , t h i s . on方法。例如,this. onthis.EventBus.$on(‘eventName’, callback),其中eventName是事件名,callback是处理事件的函数。
  • 移除监听:如果需要在组件销毁时移除事件监听,可以使用 o f f 方 法 。 例 如 , t h i s . off方法。例如,this. offthis.EventBus.$off(‘eventName’, callback)。
  • 注意事项:虽然EventBus提供了一种简单的方式来实现组件间通信,但过度使用可能会导致代码难以维护。因此,对于更复杂的应用,建议使用Vuex作为状态管理解决方案。

总的来说,通过以上步骤,可以在Vue项目中使用EventBus来实现不同组件之间的通信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1428964.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

布隆过滤器的概述和使用

1 布隆过滤器概述 1.1 概述 布隆过滤器&#xff08;Bloom Filter&#xff09;是1970年由布隆提出的。它实际上是由一个很长的二进制向量&#xff08;数组&#xff09;和一系列随机映射函数&#xff08;hash函数&#xff09;组成&#xff0c;它不存放数据的明细内容&#xff0…

C语言中的指针详解

大家好&#xff0c;今天给大家介绍C语言中的指针详解&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 **指针是C语言中的一个重要概念&#xff0c;它提供了一种直接访问内存地址…

【学员分享-考试心得】国产数据库潜力无限,云贝教育OBCP认证培训帮您解难题

近年来&#xff0c;随着国产化转型的推进&#xff0c;国外数据库的岗位需求逐渐减少&#xff0c;让许多IT从业者倍感压力。在这种情况下&#xff0c;了解国产数据库成为了求职市场上的竞争力。云贝老师们将聚焦于OceanBase、PostgreSQL、TDSQL等IT培训&#xff0c;探讨其对国产…

LED点阵屏(基于51单片机)

师从江科大 LED点阵屏 LED点阵屏由若干个独立的LED组成&#xff0c;LED以矩阵的形式排列&#xff0c;以灯珠亮灭来显示文字、图片、视频等。 LED点阵屏分类 按颜色&#xff1a;单色、双色、全彩 按像素&#xff1a;8*8、16*16等&#xff08;大规模的LED点阵通常由很多个…

SpringBoot实战2

目录 1.如何返回两个类型的数据&#xff1f;User和Booth 2.如何使用MyBatis遍历一个数组进行查询&#xff1f; 3.前端要的数据太多太杂&#xff0c;我们拼接多个List&#xff0c;前端找数据困难&#xff0c;浪费时间。因此我们进行三表联表查询。 1.首先创建一个vo包&#x…

【数据结构】双向链表 超详细 (含:何时用一级指针或二级指针;指针域的指针是否要释放)

目录 一、简介 二. 双链表的实现 1.准备工作及其注意事项 1.1 先创建三个文件 1.2 注意事项&#xff1a;帮助高效记忆 1.3 关于什么时候 用 一级指针接收&#xff0c;什么时候用 二级指针接收&#xff1f; 1.4 释放节点时&#xff0c;要将节点地址 置为NULL&#xff0…

FANUC机器人开机时无法进入系统,示教器黑屏故障处理总结

FANUC机器人开机时无法进入系统&#xff0c;示教器黑屏故障处理总结 故障描述&#xff1a; FANUC机器人开机时&#xff0c;示教器在初始化时显示&#xff1a;EMAC initial call failed&#xff08;示教器上电时会进入boot画面&#xff0c;左上角会出现一些白色的英文提示&#…

项目安全-----加密算法实现

目录 对称加密算法 AES &#xff08;ECB模式&#xff09; AES(CBC 模式)。 非对称加密 对称加密算法 对称加密算法&#xff0c;是使用相同的密钥进行加密和解密。使用对称加密算法来加密双方的通信的话&#xff0c;双方需要先约定一个密钥&#xff0c;加密方才能加密&#…

openGauss学习笔记-212 openGauss 数据库运维-日志参考

文章目录 openGauss学习笔记-212 openGauss 数据库运维-日志参考212.1 日志类型简介212.2 系统日志212.3 操作日志212.4 审计日志212.5 WAL日志212.6 性能日志 openGauss学习笔记-212 openGauss 数据库运维-日志参考 212.1 日志类型简介 在数据库运行过程中&#xff0c;会出现…

Java面试——计网篇

一、基础篇 1、 TCP/IP 网络模型 对于同一台设备上的进程间通信&#xff0c;有很多种方式&#xff0c;比如有管道、消息队列、共享内存、信号等方式&#xff0c;而对于不同设备上的进程间通信&#xff0c;就需要网络通信&#xff0c;而设备是多样性的&#xff0c;所以要兼容多…

RDBMS-MySQL高级

数据操作语句&#xff08;DML&#xff09;多表/关联查询Mysql中的函数事务执行流程数据库的备份与还原数据库表设计三范式 一、数据操作语句&#xff08;DML&#xff09; 插入数据 语法&#xff1a; 1.1插入&#xff08;insert [into]&#xff09;或添加一条数据 -- 指定列…

excel统计分析——卡方独立性检验(下)

参考资料&#xff1a;生物统计学 书接上文&#xff1a;https://blog.csdn.net/maizeman126/article/details/135893731 2、配对列联表 配对设计的数据&#xff0c;进行列联表检验时&#xff0c;采用McNemar-Bowker检验法进行检验。检验统计量为&#xff1a; 自由度dfk(k-1)/2…

CSS要点总结

一、CSS 快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>css 快速入门</title><!-- 解读1. 在 head 标签内&#xff0c;出现了 <style type"text/css"></style…

Spring Framework(6.x)源码编译与源码阅读入门

目录 一、Spring Framework 源码获取问题 1.1 Spring Framework 官网 1.2 Spring Framework 源码地址 1.3 关于访问不了GitHub 官网的解决方案 1.3.1 修改本地hosts文件 1.3.2 GitHub520 1.3.3 Gitee 导入 二、Spring Framework 源码编译 2.1 环境说明 2.1.1 JDK版本 …

代码随想录算法训练营29期|day38 任务以及具体安排

第九章 动态规划part01 509. 斐波那契数 //非压缩状态的版本 class Solution {public int fib(int n) {if (n < 1) return n; int[] dp new int[n 1];dp[0] 0;dp[1] 1;for (int index 2; index < n; index){dp[index] dp[index - 1] dp[index - 2];}r…

【AI数字人-论文】Geneface论文

文章目录 前言pipelineaudio-to-motionMotion domain adaptation可视化 Motion-to-imageHead-NeRFTorso-NeRF 结果对比 前言 语音驱动的说话人视频合成旨在根据一段输入的语音&#xff0c;合成对应的目标人脸说话视频。高质量的说话人视频需要满足两个目标&#xff1a; &#…

【无标题】Vue项目中你是如何解决跨域的呢?

文章目录 一、跨域是什么二、如何解决CORSProxy 一、跨域是什么 跨域本质是浏览器基于同源策略的一种安全手段 同源策略&#xff08;Sameoriginpolicy&#xff09;&#xff0c;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能 所谓同源&#xff08;即指在同一个域…

Cmake语法学习3:语法

1.双引号 1.1 命令参数 1&#xff09;介绍 命令中多个参数之间使用空格进行分隔&#xff0c;而 cmake 会将双引号引起来的内容作为一个整体&#xff0c;当它当成一个参数&#xff0c;假如你的参数中有空格&#xff08;空格是参数的一部分&#xff09;&#xff0c;那么就可以使…

智慧商城(continue)

文章目录 1.静态页面结构准备和动态渲染2.搜索 - 历史记录管理1. 写好基础静态页面,可以先往里面加一点假数据2. 上面基本的渲染直接利用history渲染就可以了3. 搜索历史基本渲染结束了,开始点击搜索添加历史4. vant内用v-model" ",可以快速拿到搜索框的值5. 往历史记…