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

mitt 事件发布-订阅库在 react 中的使用

mitt是一个轻量级的事件发布 - 订阅库,在 React 项目里,使用它能实现组件间的通信。下面来详细介绍一下 mitt 在 React 中的使用方法:

安装 mitt

在项目根目录下执行以下命令:

npm install mitt

使用

  1. 新建一个 eventBus.js 文件,创建事件总线,并暴露出去:
    import mitt from 'mitt';
    const emitter = mitt();
    export default emitter;    
    
  2. 新建一个发送事件的组件 SenderComponent.js。
    在按钮的点击事件处理函数里,借助emitter.emit方法发送一个名为message的事件,并且传递了一条消息。
import React from 'react';
import emitter from './eventBus';const SenderComponent = () => {const handleClick = () => {// 发送事件,事件名为 'message',并传递数据emitter.emit('message', 'Hello from SenderComponent!');};return (<button onClick={handleClick}>Send Message</button>);
};export default SenderComponent;    
  1. 新建一个接收事件的组件ReceiverComponent.js
    在useEffect钩子中,使用emitter.on方法监听message事件。当事件触发时,会执行对应的回调函数。组件卸载时,使用emitter.off方法移除监听器,以此避免内存泄漏。
import React, { useEffect } from 'react';
import emitter from './eventBus';const ReceiverComponent = () => {useEffect(() => {// 监听 'message' 事件const handleMessage = (message) => {console.log('Received message:', message);};emitter.on('message', handleMessage);// 组件卸载时移除监听器return () => {emitter.off('message', handleMessage);};}, []);return (<div>Waiting for messages...</div>);
};export default ReceiverComponent;    

到此就完整实现了 mitt 的组件通信。

http://www.xdnf.cn/news/2711.html

相关文章:

  • 简单理解https与http
  • 邮件分类特征维度实验分析
  • 软件测试全流程与主流测试方法详解:从理论到实战
  • 快乐数(双指针解法)
  • 1.57g 五一优选 = 雨晨 26100.3915 Windows 11 IoT 企业版 LTSC 2025 极速版(轻)
  • Flutter 学习之旅 之 flutter 作为 module ,在 Android 的界面中嵌入Flutter界面功能的简单整理
  • 【JAVAFX】controller中反射调用@FXML的点击事件失败
  • el-table 自定义列、自定义数据
  • 【学习笔记】RL4LLM(三)
  • 【设计模式】GOF概括
  • 拖动banner图,解决点击冲突问题
  • web3.js 和 ethers.js 的核心区别
  • c++11: 类型转换
  • dummy cli-tool ubuntu22.04使用
  • 在 Git 中,撤销(回退)merge 操作有多种方法
  • terraform 动态块(Dynamic Blocks)详解与实践
  • [Python开发] 如何用 VSCode 编写和管理 Python 项目(从 PyCharm 转向)
  • Java面试:Spring及Spring Cloud技术深度剖析
  • docker安装部署TDengine实现主从复制
  • 雷池WAF的身份认证 - GitHub
  • <uniapp><插件><UTS>在uniapp中,创建自己的插件并发布到uni插件市场
  • JavaScript-基础语法
  • 「Mac畅玩AIGC与多模态05」部署篇03 - 在 Mac 上部署本地向量化模型(Embedding Models)
  • 在QGraphicsView中精确地以鼠标为锚缩放图片
  • 迈瑞医疗一季度业绩环比大幅改善 国内业务将从今年三季度迎来重大拐点
  • 用Java模拟打字:深入解析 java.awt.Robot 的键盘控制艺术
  • 【Robocorp实战指南】Python驱动的开源RPA框架
  • 【Vue3-Bug】中路由加载页面直接显示空白
  • 【面经分享】长鑫存储Java研发一面|40分钟速战速决
  • python_股票月数据趋势判断