vue3 使用 mitt 插件实现非父子组件传值

介绍 : mitt 是一个 JavaScript 库,用于实现事件的订阅和发布

1、安装

bash 复制代码
npm install mitt -S

2、新建 utils/eventBus.ts 文件

ts 复制代码
// eventBus.ts 文件

import mitt from 'mitt'
const eventBus = mitt()
export default eventBus

3、使用

vue 复制代码
// 组件1
<template>
  <div>
  <p>组件1: {{ message }}</p>
  <button @click="offGetMessageFn">关闭指定事件</button>
  <button @click="clearAllFn">清除所有自定义事件</button>
 </div>
<template>

<script lang="ts" setup>
import eventBus from '@/utils/eventBus'
const message = ref<string>('')
// 监听事件 getMesage
eventBus.on('getMessage', (msg: string) => {
  message.value = msg
})

// 关闭 getMesage 事件
const offGetMessageFn = () => {
 eventBus.off('getMessage')
}

// 清除所有自定义事件
const clearAllFn = () => {
 eventBus.all.clear()
}
</script>





// 组件2
<template>
  <div>
    <button @click="onClick">组件2: </button>
  </div>
<template>

<script lang="ts" setup>
import eventBus from '@/utils/eventBus'

// 发送事件
const onClick = () => {
  eventBus.emit('getMessage', 'hello 我是组件2发来的信息')
}
</script>
相关推荐
香蕉可乐荷包蛋3 小时前
浅入ES5、ES6(ES2015)、ES2023(ES14)版本对比,及使用建议---ES6就够用(个人觉得)
前端·javascript·es6
未来之窗软件服务3 小时前
资源管理器必要性———仙盟创梦IDE
前端·javascript·ide·仙盟创梦ide
liuyang___4 小时前
第一次经历项目上线
前端·typescript
西哥写代码5 小时前
基于cornerstone3D的dicom影像浏览器 第十八章 自定义序列自动播放条
前端·javascript·vue
清风细雨_林木木5 小时前
Vue 中生成源码映射文件,配置 map
前端·javascript·vue.js
FungLeo5 小时前
node 后端和浏览器前端,有关 RSA 非对称加密的完整实践, 前后端匹配的代码演示
前端·非对称加密·rsa 加密·node 后端
雪芽蓝域zzs5 小时前
JavaScript splice() 方法
开发语言·javascript·ecmascript
不灭锦鲤5 小时前
xss-labs靶场第11-14关基础详解
前端·xss
不是吧这都有重名6 小时前
利用systemd启动部署在服务器上的web应用
运维·服务器·前端
霸王蟹6 小时前
React中巧妙使用异步组件Suspense优化页面性能。
前端·笔记·学习·react.js·前端框架