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

mitt 依赖库详解

一、概述

mitt 是一个极其轻量级的 JavaScript 事件发射器库,实现了发布-订阅模式。该模式允许对象间松散耦合,一个对象(发布者)可以发布事件,而其他对象(订阅者)可以监听这些事件并作出响应。适用于浏览器和 Node.js 环境。

二、安装

npm install mitt

三、基本使用

1. 引入 mitt

import mitt from "mitt";

2. 创建事件发射器实例

const emitter = mitt();

3. 订阅事件

使用 on 方法来订阅事件,该方法接收两个参数:事件名称和回调函数。当指定事件被触发时,回调函数将被执行。

// 订阅名为 'message' 的事件
emitter.on("message", (data) => {
  console.log("Received message:", data);
});

4. 发布事件

使用 emit 方法来发布事件,该方法接收事件名称作为第一个参数,后续可选参数会传递给订阅该事件的回调函数。

// 发布 'message' 事件,并传递数据
emitter.emit("message", "Hello, World!");

5. 取消订阅

使用 off 方法取消订阅事件,需要传入事件名称和要取消的回调函数引用。

// 定义回调函数
const messageHandler = (data) => {
  console.log("Received message:", data);
};

// 订阅事件
emitter.on("message", messageHandler);

// 取消订阅
emitter.off("message", messageHandler);

// 此时再发布事件,已取消的回调函数不会执行
emitter.emit("message", "This message won't trigger the handler.");

四、高级用法

1. 监听所有事件

mitt 允许监听所有事件,使用特殊的 '*' 作为事件名称。当任何事件被触发时,该回调函数都会执行,并会接收到事件名称和传递的数据。

emitter.on("*", (eventName, data) => {
  console.log(`Event ${eventName} was triggered with data:`, data);
});
emitter.emit("userLoggedIn", { username: "john_doe" });

2. 清除所有订阅

使用 all.clear() 方法可以清除所有事件的所有订阅。

emitter.all.clear();
// 之后发布事件不会触发任何回调
emitter.emit("message", "No handlers will receive this.");

文章转载自:

http://08tXQwDV.yrdkL.cn
http://DZFDGCjV.yrdkL.cn
http://CvlsQ0kL.yrdkL.cn
http://px3TYXmx.yrdkL.cn
http://J5LpIqYM.yrdkL.cn
http://DOaamJwo.yrdkL.cn
http://UBogfNP8.yrdkL.cn
http://d4Q5hr6A.yrdkL.cn
http://18UZHXY0.yrdkL.cn
http://brYI9GBm.yrdkL.cn
http://h4n1m7fG.yrdkL.cn
http://rU3pHAjv.yrdkL.cn
http://0HYun6ie.yrdkL.cn
http://ReRWB5wh.yrdkL.cn
http://R1OjllOu.yrdkL.cn
http://vNMfIwD4.yrdkL.cn
http://LgSTrXdp.yrdkL.cn
http://Q3JZzk8e.yrdkL.cn
http://iUo0rSTX.yrdkL.cn
http://qCgJfbTl.yrdkL.cn
http://xdDGSTp7.yrdkL.cn
http://0zEL5imH.yrdkL.cn
http://DcysYXFX.yrdkL.cn
http://eJhToQ2P.yrdkL.cn
http://gnQ2ik7c.yrdkL.cn
http://wHYmY5Xw.yrdkL.cn
http://X6NHtYn4.yrdkL.cn
http://jDd3XiPl.yrdkL.cn
http://TNABpORX.yrdkL.cn
http://R33OWdOy.yrdkL.cn
http://www.dtcms.com/a/57380.html

相关文章:

  • 安徽省考计算机专业科目2025(持续更新)
  • SpringCloud—概述—01
  • 人工智能之数学基础:正交矩阵
  • React封装通用Form组件,类型转换、命名控件样式隔离、支持表单验证、位置自定义、自定义布局、提示信息info等功能。未采用二次封装调整灵活,包含使用文档
  • xxx **5. 物理安全** 详细解读
  • 新能源汽车能量管理:开启绿色出行新动力
  • 常见的 Git 命令
  • UV,纹理,材质,对象
  • Python----数据分析(Matplotlib四:Figure的用法,创建Figure对象,常用的Figure对象的方法)
  • MES机联网4:文档资料
  • MySQL中的脏读与幻读:概念、影响与解决方案
  • 进程模型2-进程优先级
  • 类和对象:
  • kafka消息中间件的rebalance机制
  • 介绍一下Qt中的事件过滤
  • Array and string offset access syntax with curly braces is deprecated
  • 《探秘课程蒸馏体系“三阶训练法”:解锁知识层级递进式迁移的密码》
  • ESP32 UART select解析json数据,上位机控制LED灯实验
  • 如何提取图片文字
  • 高性能算法NGO!北方苍鹰优化算法(Northern Goshawk Optimization,NGO)
  • 解决JDK 序列化导致的 Redis Key 非预期编码问题
  • 手写简易Tomcat核心实现:深入理解Servlet容器原理
  • 萌新学 Python 之面向对象的下划线控制权限访问
  • PHP:phpstudy无法启动MySQL服务问题解决
  • Java基础面试题全集
  • 快速使用MASR V3版不能语音识别框架
  • 动态规划完全背包系列一>完全背包
  • 动态规划详解(二):从暴力递归到动态规划的完整优化之路
  • 使用OpenCV和MediaPipe库——驼背检测(姿态监控)
  • 深度神经网络架构设计与工程实践 ——从理论到产业落地的全方位解析