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

mitt全局通信

安装mitt

"mitt": "^3.0.1",
  • mitt 专注于最基本的事件订阅和发布,适合在需要轻量级事件管理的场景中使用
  • mitt是不支持进行异步处理的

封装函数

在/@/utils/ 封装函数 eventBus.js

// eventBus.js
import mitt from 'mitt';const eventBus = mitt();
export default eventBus;

通知

import eventBus from '/@/utils/eventBus.js';const formatDateToString = (date: Date): string => {const year = date.getFullYear(); // 获取年份const month = String(date.getMonth() + 1).padStart(2, '0'); // 获取月份,记得加1,因为getMonth()返回的月份是从0开始的const day = String(date.getDate()).padStart(2, '0'); // 获取日期return `${year}-${month}-${day}`; // 返回格式化后的字符串
};/*** 日期选择框改变事件* @param val*/
const dateChange = (val: any) => {const startDate = formatDateToString(new Date(val[0]));const endDate = formatDateToString(new Date(val[1]));eventBus.emit('boardQuery', {startDate: startDate,endDate: endDate})
}

接收

const handleEvent = async (data: any) => {// data第一次拿的是默认值,后续如果dateChange函数触发,data就是mitt传来的const param = {startDate: data.startDate,endDate: data.endDate,};// 自己的功能await loadData(param);
};// 获取当前日期
const getCurrentDate = (): string => {const today = new Date();return today.toISOString().slice(0, 10); // 获取格式为 yyyy-MM-dd
};// 计算一个月前的开始日期
const getStartMonth = (): string => {const today = new Date();const oneMonthAgo = new Date(today);oneMonthAgo.setMonth(today.getMonth() - 1); // 获取一个月前的日期return oneMonthAgo.toISOString().slice(0, 10); // 获取格式为 yyyy-MM-dd
};onMounted(() => {const startDate = getStartMonth()const endDate = getCurrentDate()handleEvent({startDate: startDate,endDate: endDate})eventBus.on('boardQuery', handleEvent);
})// 在页面销毁时取消监听,防止内存泄漏
onUnmounted(() => {eventBus.off('boardQuery', handleEvent);
});
打印的结果:
{"startDate": "2025-07-10","endDate": "2025-08-06"
}
http://www.dtcms.com/a/278676.html

相关文章:

  • Boost.Asio 异步写:为什么多次 async_write_some 会导致乱序,以及如何解决
  • Angular 框架下 AI 驱动的企业级大前端应用开
  • 2025/7/14——java学习总结
  • Ubuntu安装Mongodb
  • 《甘肃棒球》国家级运动健将标准·棒球1号位
  • 九、官方人格提示词汇总(下)
  • OpenCV 视频处理与摄像头操作详解
  • 面试题--xxl-job分布式任务调度
  • 全面解析WOFOST与PCSE农作物生长模型;农作物生长和产量预测
  • 基于esp32系列的开源无线dap-link项目使用介绍
  • 空间智能-李飞飞团队工作总结(至2025.07)
  • 【工具】AndroidStudio修改中文语言汉化
  • Python数据容器-通用功能
  • 九、官方人格提示词汇总(中-1)
  • Usage of standard library is restricted (arkts-limited-stdlib) <ArkTSCheck>
  • 【leetcode】231. 2的幂
  • 13.7 Meta LLaMA2-Chat核心技术突破:三重强化学习实现91.4%安全评分,超越ChatGPT的对话模型架构全解析
  • React 第六十九节 Router中renderMatches的使用详解及注意事项
  • 文档处理控件Aspose.Words教程:从 C# 中的 Word 文档中提取页面
  • 汽车工件工艺追溯管理系统软件设计(草稿)
  • 我的Qt八股文面试笔记1:信号与槽文件流操作
  • 持续优化小程序排名,稳定获取搜索流量
  • 【世纪龙科技】迈腾B8汽车整车检测与诊断仿真实训系统
  • vue中配置Eslint的步骤
  • 【世纪龙科技】汽车整车检测与诊断仿真实训系统-迈腾B8
  • Redis随笔
  • 算法学习笔记:21.动态规划——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • Qt小组件 - 2(布局)瀑布流布局,GridLayout,FlowLayout
  • QT跨平台应用程序开发框架(7)—— 常用输入类控件
  • [Dify] -基础入门10- Dify 应用开发与 ChatGPT 的区别与优势分析