Vue3:mitt实现组件通信

news2024/9/23 15:07:23

目录

一.性质

1.轻量级

2.单例

3.异步

4.事件绑定与解绑

二.作用

1.组件间通信

2.解耦

3.状态管理

4.事件的集中处理

三.使用

1.安装`mitt`

2.引入mitt;调用mitt;暴露mitt

3.组件1

4.组件2

四.代码

1.组件1

2.组件2

五.效果


一.性质

1.轻量级

mitt是一个非常轻量级的库,其主要目标是提供一个简单、高效、易于使用的事件总线。

2.单例

mitt通常被实例化为一个全局对象,这样可以确保在整个应用中只有一个实例,便于组件间共享。

3.异步

mitt支持异步事件处理,这意味着你可以注册事件处理器,当事件触发时,处理器可以异步执行。

4.事件绑定与解绑

允许组件注册事件处理器并随时解绑它们,以控制事件处理的生命周期。

二.作用

1.组件间通信

在Vue中,组件间通信通常通过props和事件实现。然而,当组件间的通信关系复杂,或者需要在多个组件间共享状态时,使用事件总线可以提供更灵活的解决方案。

2.解耦

通过事件总线,组件可以被解耦,即组件不需要直接引用其他组件,而是通过事件总线来传递信息,这有助于提高组件的复用性和可维护性。

3.状态管理

在大型应用中,事件总线可以作为状态管理的工具,帮助管理全局状态,尤其是当应用使用了如Vuex这样的状态管理库时,事件总线可以作为其补充,处理特定的事件流。

4.事件的集中处理

在某些场景下,可能需要对多个组件的事件进行集中处理,比如更新全局状态、触发全局操作等,事件总线提供了一个集中处理这些事件的中心点。

三.使用

1.安装`mitt`

控制台输入npm i mitt

2.引入mitt;调用mitt;暴露mitt

3.组件1

1.创建一个Vue组件,显示子组件1的标题、游戏机名称和收到的信息。

2.使用响应式变量gametoy来存储游戏机名称和接收到的信息。

3.通过监听send-toy事件来接收外部发送的信息,并将接收到的信息更新到toy变量中,从而在界面上显示出来。

4.组件2

响应式变量toy存储玩具名称,并使用自定义的emitter进行事件的触发和传递。

四.代码

1.组件1

<template>
    <div class="father">
        <h4>子组件1</h4>
	    <h4>游戏机:{{ game }}</h4>
        <h4>收到的信息:{{ toy }}</h4>
    </div>
</template>

<script setup lang="ts" name="father">
    import { ref } from "vue";
	import emitter from "@/utils/emitter";

    let game = ref('ps5')
    let toy = ref('')
 
    // 绑定事件
    emitter.on('send-toy',(value:any)=>{
    console.log('send-toy事件被触发',value)
    toy.value = value
    })
</script>


<style>
.father{
    background-color: skyblue;
}
h4{
    margin-left: 20px;
    font-size: 20px;
}
button{
    width: 120px;
    height: 40px;
    font-size: 20px;
    margin-left: 20px;
}

</style>

2.组件2

<template>
    <div class="son">
        <h4>子组件2</h4>
	    <h4>玩具:{{ toy }}</h4>
        <button @click="emitter.emit('send-toy',toy)">玩具</button>
    </div>
</template>

<script setup lang="ts" name="son">

    import { ref } from "vue";
	import emitter from "@/utils/emitter";

    let toy = ref('变形金刚')

</script>


<style>
.son{
    background-color: skyblue;
}

h4{
    margin-left: 20px;
    font-size: 20px;
}
button{
    width: 120px;
    height: 40px;
    font-size: 20px;
    margin-left: 20px;
}

</style>

五.效果

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

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

相关文章

多模态论文串讲-学习笔记(上)

入门参考&#xff1a;跟着chatgpt一起学|多模态入门-CSDN博客 学习参考&#xff1a;多模态论文串讲上【论文精读46】_哔哩哔哩_bilibili&#xff0c;强烈推荐这个博主啊&#xff0c;感觉比沐神讲的还要清楚&#xff0c;非常喜欢。 本文介绍只使用transformer encoder的方法&a…

医院为什么要安装医疗设备防漏费系统?

一、医院防漏费管理的重要性 随着人们健康意识的加强&#xff0c;医生对诊断的依据都造就了检查和化验在新形式下的重要性。人们对体检重要性的认识等各方面因素。导致了现在医院检查和化验位置一度提升。成为了医院工作的重中之中。而在中国国情的大环境下&#xff0c;熟人检…

20240923 每日AI必读资讯

GPT-4o能玩《黑神话》&#xff01;精英怪胜率超人类&#xff0c;无强化学习纯大模型方案 - 阿里巴巴的研究人员们提出了一个新型VARP&#xff08;视觉动作角色扮演&#xff09;智能体框架。 - 能直接将游戏截图作为输入&#xff0c;通过视觉语言模型推理&#xff0c;最终生成…

超强AI绘画工具StableDiffusion,SD整合包V4.9 来了 版本win加mac安装包以及搭载PS安装说明

众所周知&#xff0c;StableDiffusion 是非常强大的AI绘图工具&#xff0c;今天为大家带来的是 Stable Diffusion SD整合包v4.9 版本安装说明 。 这里带来的安装版本是9月最新整合包sd-webui-aki-v4.9 版本 。WIN加MAC stable diffusion整合包可以扫描下方&#xff0c;免费获取…

Spring实战——入门讲解

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 Spring介绍 Spring实战的入门讲解主要涵盖了Spring框架的基本概念、核心功能以及应用场景。以下是关于Spring实战入门的具体介绍&#xff1a; Spring框架概述&#xff1a;Spring是一个轻量级的Java开发框架…

Leetcode 65. 有效数字

1.题目基本信息 1.1.题目描述 给定一个字符串 s &#xff0c;返回 s 是否是一个 有效数字。 例如&#xff0c;下面的都是有效数字&#xff1a;”2″, “0089”, “-0.1”, “3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e7”, “6e-1”, “53.5e93”, “-123.456e789…

WebLogic命令执行漏洞CVE-2019-2725

1.环境搭建 cd vulhub-master/weblogic/weak_password docker-compose up -d 2.漏洞验证 http://47.121.211.205:7001/_async/AsyncResponseService 说明存在漏洞 3.在当前页面抓包 修改请求包 写入shell wget http://47.121.211.205/1.txt -O servers/AdminServer/tmp/_W…

大数据新视界 --大数据大厂之 Vue.js 与大数据可视化:打造惊艳的数据界面

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】

Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】 目录 Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】 一、简单介绍 二、工厂方法模式 (Factory Method Pattern) 1、什么时候使用工厂方法模式 2、使用工厂模式的好处 3、使用工厂方法模…

SPI驱动学习六(SPI_Master驱动程序)

目录 前言一、SPI_Master驱动程序框架1. SPI传输概述1.1 数据组织方式1.2 SPI控制器数据结构 2. SPI传输函数的两种方法2.1 老方法2.2 新方法 二、如何编写SPI_Master驱动程序1. 编写设备树2. 编写驱动程序 三、SPI_Master驱动程序简单示例demo1. 使用老方法编写的SPI Master驱…

WEB领域是不是黄了还是没黄

进入2024年后&#xff0c;WEB领域大批老表失业&#xff0c;一片哀嚎&#xff0c;个个饿的鬼叫狼嚎&#xff0c;为啥呢&#xff0c;下面是我个人的见解和看法。 中国程序员在应用层的集中 市场需求&#xff1a;中国的互联网行业在过去几年中经历了爆炸性增长&#xff0c;尤其是…

平板电容笔哪个牌子好?精选电容笔品牌排行榜前五名推荐!

在当今时代&#xff0c;平板电容笔已经成为平板电脑的重要配件&#xff0c;为人们的学习、工作和创作带来了极大的便利。然而&#xff0c;市场上平板电容笔的品牌众多&#xff0c;质量和性能也参差不齐&#xff0c;这让消费者在选择时常常感到困惑。平板电容笔究竟哪个牌子更好…

Revit 2018 提示 您使用的 Revit 授權無效。

昨天晚上想学下BIM&#xff0c;安装了这个软件&#xff0c;忘了给他断网了&#xff0c;今天早上起来一直提示这个信息&#xff0c;通过查看进程的位置找到了一个acwebbrowser 路径如下&#xff1a;C:\Program Files\Common Files\Autodesk Shared\CLM\V5\MSVC14\cliccore 防火…

如何使用 Rust 框架进行 RESTful API 的开发?

一、RESTful API 的开发 使用 Rust 框架进行 RESTful API 开发&#xff0c;你可以选择多种流行的 Rust Web 框架&#xff0c;如 Actix-web、Rocket、Warp 和 Tide 等。以下是使用这些框架进行 RESTful API 开发的基本步骤和概念&#xff1a; 选择框架&#xff1a;根据项…

OpenAI-gym how to implement a timer for a certain action in step()

题意&#xff1a;OpenAI-gym 如何在 step() 中为某个动作实现一个计时器 问题背景&#xff1a; One of the actions I want the agent to do needs to have a delay between every action. For context, in pygame I have the following code for shooting a bullet: 我希望代…

从趋势到常态:TikTok定制化产品的崛起与变革

随着数字化和TikTok的发展&#xff0c;定制化产品在消费者日常生活中愈发普及&#xff0c;逐渐从一种时尚潮流转变为常态。这一转变不仅改变了消费者的购物方式&#xff0c;也重塑了市场的供需关系、产品设计理念和商业模式。本文Nox聚星将和大家探讨TikTok定制化产品的未来发展…

QT 数据加密

一.使用环境 应该是通用的,此测试版本为如图 二.使用代码 1. 运行代码 QString data = "123abcAbc.-+";qDebug() << "加密:" << QAESEncryption::encodedText(data, "填入自己秘钥");qDebug() << "解密:" <…

Qemu开发ARM篇-4、kernel交叉编译运行演示

文章目录 1、kernel编译2、运行kernel3、FAQ 在前一篇 Qemu开发ARM篇-3、qemu运行uboot演示中&#xff0c;我们演示了如何使用 qemu运行uboot&#xff0c;在该篇中&#xff0c;我们将演示如何交叉编译 kernel并在qemu中运行 kernel. 1、kernel编译 本次演示使用kernel版本…

Java 中使用 Gson 实现深度克隆 #什么是深克隆与浅克隆?#clone方法为什么不能直接通过某个对象实例在外部类调用?

&#x1f310;Gson的jar包提供到本文上方&#xff0c;欢迎自取&#x1f310; 前言 &#x1f310;在 Java 编程中&#xff0c;克隆对象是一项常见的需求&#xff0c;特别是在处理不可变对象、避免引用传递时&#xff0c;深度克隆显得尤为重要。虽然 Java 提供了 clone() 方法&a…

【线程安全】如何区分线程安全还是线程不安全? 一文解释清楚线程安全问题,解释什么是锁重用、锁竞争、分段锁

线程安全问题 是一个重难点&#xff0c;编程就是这样&#xff0c;有的时候自己无论如何苦思冥想也弄不明白&#xff0c;但如果有人指点一二就能豁然开朗&#xff0c;希望本文可以给各位同学带来帮助 本文作者&#xff1a; csdn 孟秋与你 文章目录 如何判断一个类是否线程安全是…