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>
相关推荐
moxiaoran57531 小时前
uni-app萌宠案例学习笔记--页面布局和CSS样式设置
前端·css·uni-app
CrissChan2 小时前
Pycharm 函数注释
java·前端·pycharm
小小小小宇3 小时前
Vue.nextTick()笔记
前端
小约翰仓鼠4 小时前
vue3子组件获取并修改父组件的值
前端·javascript·vue.js
Lin Hsüeh-ch'in4 小时前
Vue 学习路线图(从零到实战)
前端·vue.js·学习
烛阴5 小时前
bignumber.js深度解析:驾驭任意精度计算的终极武器
前端·javascript·后端
计蒙不吃鱼5 小时前
一篇文章实现Android图片拼接并保存至相册
android·java·前端
全职计算机毕业设计5 小时前
基于Java Web的校园失物招领平台设计与实现
java·开发语言·前端
你的人类朋友5 小时前
✍️Node.js CMS框架概述:Directus与Strapi详解
javascript·后端·node.js