Vue3中使用事件总线Bus的两种方式(mitt)

news2024/9/22 15:27:37

首先咱们得先下载mitt指令如下:

npm i mitt --save

接下来介绍Vue3中通过mitt使用事件总线的两种方式

方式一:

该方式为全局挂载mitt,个人感觉有点繁琐,不太推荐

创建:

1.首先找到你的main.js或main.ts文件

2.引入mitt

3.挂载mitt

如下图所示:

代码如下:

import mitt from 'mitt'
//  通过mitt配置事件总线
const bus = mitt()
app.config.globalProperties.$bus = bus

使用 :

发送方:

1.引入从vue中引入getCurrentInstance

2.获取到刚才挂载的bus

3.发送自定义事件,并携带参数

代码如下:

import { getCurrentInstance } from "vue"

const ctx = getCurrentInstance()
const bus = ctx?.appContext.config.globalProperties.$bus



//自行定义
let a = ref<string>("你好")
bus.emit('sendToBrother', a)

 接收方:

1.引入从vue中引入getCurrentInstance

2.获取到刚才挂载的bus

3.监听总线上的自定义事件,获取事件携带的参数

代码如下:

import { getCurrentInstance } from "vue"


const ctx = getCurrentInstance()
const bus = ctx?.appContext.config.globalProperties.$bus

// 如何接收,使用什么来接收请自行定义
let message = ref<string>("")

bus.on('sendToBrother', (data) => {
    message.value = data.value
    console.log(data.value);

})

方式二:

该方式为额外创建一个bus.js文件作为mitt的中转,每次使用mitt时直接从该文件导入即可

创建:

1.在src目录下创建一个utils文件夹

2.在utils文件夹下创建一个bus.js文件

3.在文件中引入mitt并导出

代码如下:

import mitt from 'mitt'
export const events = mitt()

使用:

发送方:

1.引入mitt

2.发送自定义事件并携带参数

代码如下:

import { events } from '../../utils/bus.js'
const bus = events

let a = ref<string>("你好")

//  触发发送自定义事件
const handleOneClick = () => {

    bus.emit('sendToBrother', a)

}

 接收方:

1.引入mitt

2.监听总线上的自定义事件,获取事件携带的参数

代码如下:

import { events } from '../../utils/bus.js'
const bus = events

let message = ref<string>("")


bus.on('sendToBrother', (data) => {
    message.value = data.value
    console.log(data.value);

})

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

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

相关文章

MIT 6.S081 Lab Nine --- file system

MIT 6.S081 Lab Nine --- file system 引言File systemLarge files(moderate)预备看什么你的工作代码解析 Symbolic links(moderate)硬链接代码解析 可选的挑战练习 引言 本文为 MIT 6.S081 2020 操作系统 实验九解析。 MIT 6.S081课程前置基础参考: 基于RISC-V搭建操作系统系…

pc文件上传

1.代码&#xff1a; <template><div><el-upload:multiple"true":auto-upload"true":headers"headers":action"uploadFileUrl":before-upload"handleBeforeUpload":on-error"handleUploadError":o…

MB21 手工创建261生产订单的预留

1、前面博文中有说到新增了工单超领的移动类型Z61,我们在创建新的移动类型的时候参考的是261的移动类型。本质上Z61的配置和261也是一样的。 2、我们在MB21创建预留的时候就会遇到问题 这里系统给出了提示:不能手工创建该类型的预留。 3、SE38对程序进行修改,根据报错的信…

BES IIR EQ音效设计原理

+我V hezkz17进数字音频系统研究开发交流答疑群(课题组) BES EQ音效集成流程 1 BES 音效调试工具 audiotool_v3.5 2 EQ音效参数生成 电声学工程师根据听音效果,生成参数,一般通过截图给的软件这边。 EQ参数四元组:{ IIR滤波器类型,Gain增益,f中心频率,Q品质因数 }

0801|IO进程线程day4【stat获取文件属性】

目录 1 获取文件属性 1&#xff09;stat 2&#xff09;提取文件的权限 3&#xff09;提取文件的类型 4&#xff09;提取文件所属用户名【getpwuid函数】 5&#xff09;提取文件所属组用户名【getgrgid函数】 6&#xff09;完整代码&#xff1a; 1 获取文件属性 1&#x…

error: #5: cannot open source input file “core_cmInstr.h“

GD32F103VET6和STM32F103VET6引脚兼容。 GD32F103VET6工程模板需要包含头文件&#xff1a;core_cmInstr.h和core_cmFunc.h&#xff0c;这个和STM32F103还是有区别的&#xff0c;否则会报错&#xff0c;如下&#xff1a; error: #5: cannot open source input file "core…

AI 3D结构光技术加持,小米引领智能门锁新标准

一直以来&#xff0c;小米智能门锁系列产品让更多家庭走进了安全便捷的智能生活&#xff0c;安全至上的设计让很多家庭都轻松告别了随身钥匙。 7月27日&#xff0c;小米正式推出小米智能门锁M20 Pro&#xff0c;再一次引领智能门锁产品的发展潮流。该款门锁采用AI 3D结构光技术…

算法竞赛入门【码蹄集新手村600题】(MT1080-1100)

算法竞赛入门【码蹄集新手村600题】(MT1080-1100&#xff09; 目录MT1081 xy的和MT1082 x-y的和MT1083 向下取整MT1084 k次方根MT1085 分期付款MT1086 公里转换为米MT1087 温度转换MT1088 温度对照MT1089 整理玩具MT1090 卡罗尔序列MT1091 合并||MT1092 非常大的NMT1093 序列MT…

C语言每日一题:10.不使用+-*/实现加法+找到所有数组中消失的数。

题目一&#xff1a; 题目链接&#xff1a; 思路一&#xff1a; 1.两个数二进制之间进行异或如果不产生进位操作那么两个数的和就是就是两个数进行异或的结果。 举例&#xff1a;5&#xff08;0101&#xff09;2&#xff08;0010&#xff09;进行异或等于&#xff1a;7&#xf…

Jmeter —— jmeter接口自动化测试操作流程

在企业使用jmeter开展实际的接口自动化测试工具&#xff0c;建议按如下操作流程&#xff0c; 可以使整个接口测试过程更规范&#xff0c;更有效。 接口自动化的流程&#xff1a; 1、获取到接口文档&#xff1a;swagger、word、excel ... 2、熟悉接口文档然后设计测试用例&am…

2023年华数杯建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; 最短时间生产计划模型 该模型出现在好几个竞赛赛题上&#x…

多人任务管理,如何做好任务管理,任务管理软件

任务管理&#xff0c;简单易懂&#xff0c;就是对任务进行管理。那怎么可以更好进行任务管理呢&#xff1f;怎么样样可以让任务进度可视化&#xff0c;一目了然呢&#xff1f;有效的管理可以让我们事半功倍。 接下来我们看一下如何借助任务管理软件高效的做任务管理。 首先创…

python dataframe a.combine_first(temp) # 一张表的缺失值用另一张表填充

将a的索引和temp的索引设置为一样&#xff0c;再进行缺失值填充&#xff0c;combine_first会对所有同名的column进行填充。 a.combine_first(temp)

2.04 商品搜索功能实现

根据关键字获取分类查询对应的分页商品信息&#xff0c;并可以价格和销量进行排序切换 步骤1&#xff1a;mapper.xml编写sql语句 <!-- k: 默认&#xff0c;代表默认排序&#xff0c;根据name--> <!-- c: 根据销量排序--> <!-- p: 根据价格排序--> <sel…

【C++基础(六)】类和对象(中) --拷贝构造,运算符重载

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C初阶之路⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 类和对象 1. 前言2. 拷贝构造函数2.1 对拷贝构造函数…

Approximating Wasserstein distances with PyTorch学习

https://github.com/dfdazac/wassdistance/tree/master 前置知识 Computational optimal transport学习 具体看到熵对偶的坐标上升那就行 L C ε ( a , b ) def. min ⁡ P ∈ U ( a , b ) ⟨ P , C ⟩ − ε H ( P ) \mathrm{L}_{\mathbf{C}}^{\varepsilon}(\mathbf{a}, \m…

Kafka系列之:记录一次Kafka Topic分区扩容,但是下游flink消费者没有自动消费新的分区的解决方法

Kafka系列之:记录一次Kafka Topic分区扩容,但是下游flink消费者没有自动消费新的分区的解决方法 一、背景二、解决方法三、实现自动发现新的分区一、背景 生产环境Kafka集群压力大,Topic读写压力大,消费的lag比较大,因此通过扩容Topic的分区,增大Topic的读写性能理论上下…

【RabbitMQ(day4)】SpringBoot整合RabbitMQ与MQ应用场景说明

一、SpringBoot 中使用 RabbitMQ 导入对应的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>配置配置文件 spring:application:name: rabbitmq-springbo…

云原生落地实践的25个步骤

一、什么是云原生&#xff1f; 云原生从字面意思上来看可以分成云和原生两个部分。 云是和本地相对的&#xff0c;传统的应用必须跑在本地服务器上&#xff0c;现在流行的应用都跑在云端&#xff0c;云包含了IaaS,、PaaS和SaaS。 原生就是土生土长的意思&#xff0c;我们在开始…

【Docker】Docker+Zipkin+Elasticsearch+Kibana部署分布式链路追踪

文章目录 1. 组件介绍2. 服务整合2.1. 前提&#xff1a;安装好Elaticsearch和Kibana2.2. 再整合Zipkin 点击跳转&#xff1a;Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务全套&#xff08;质量有保证&#xff0c;内容详情&#xff09; 本文主要讨论在Ela…