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

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

安装 mitt

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

复制代码
npm install mitt

使用

  1. 新建一个 eventBus.js 文件,创建事件总线,并暴露出去:

    javascript 复制代码
    import mitt from 'mitt';
    const emitter = mitt();
    export default emitter;    
  2. 新建一个发送事件的组件 SenderComponent.js。 在按钮的点击事件处理函数里,借助emitter.emit方法发送一个名为message的事件,并且传递了一条消息。

javascript 复制代码
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方法移除监听器,以此避免内存泄漏。
javascript 复制代码
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 的组件通信。

mitt 库同样适用于 vue,使用方法也是同上一样的步骤,只是要遵循 vue 的语法。

相关推荐
汉得数字平台18 小时前
汉得H-AI飞码——前端编码助手V1.1.2正式发布:融业务知识,提开发效能
前端·人工智能·智能编码
前端小万18 小时前
Jenkins 打包崩了?罪魁是 package.json 里的 ^
前端·jenkins
编程小白gogogo18 小时前
苍穹外卖前端环境搭建
前端
光影少年18 小时前
web端安全问题有哪些?
前端·安全
行走的陀螺仪18 小时前
Vite & Webpack 插件/Loader 封装完全指南
前端·webpack·node.js·vite·前端工程化·打包构建
1024肥宅18 小时前
浏览器网络请求 API:全面解析与高级封装(1)
前端·websocket·axios
小费的部落18 小时前
Excel 在Sheet3中 匹配Sheet1的A列和Sheet2的A列并处理空内容
java·前端·excel
霍格沃兹测试学院-小舟畅学18 小时前
Cypress 入门与优势分析:前端自动化测试的新利器
前端
1024肥宅18 小时前
浏览器网络请求 API:全面解析与高级封装(2)
前端·websocket·axios
幼儿园技术家18 小时前
深入理解 CSR / SSR / SSG:前端三种渲染模式的本质与选型
前端