vue3 mitt使用

2025-03-25 0 12

Vue3 mitt使用

一、解决方案

在Vue3项目中,当遇到组件间通信特别是非父子组件通信时,mitt是一个非常轻量且实用的事件总线工具。它可以帮助我们轻松地在不同组件之间传递消息和数据,而不需要层层传递props或者使用复杂的Vuex状态管理。

二、安装与基本使用

1. 安装mitt

需要安装mitt库,在终端输入以下命令:

bash
npm install mitt

2. 创建事件总线

在项目src目录下创建一个bus.js文件:

javascript
import mitt from 'mitt'
const bus = mitt()
export default bus

3. 使用事件总线

(1) 发送事件

在发送方组件中:

vue

  <button>发送消息</button>
</p>


import bus from './bus'
function sendMessage() {
    bus.emit('my-event', {message: '你好'})
}


<p>

(2) 接收事件

在接收方组件中:

vue

  <div>{{ message }}</div>
</p>


import { ref, onMounted, onUnmounted } from 'vue'
import bus from './bus'

let message = ref('')
onMounted(() => {
    bus.on('my-event', ({ message }) => {
        message.value = message
    })
})
onUnmounted(() => {
    bus.all.clear() // 组件卸载时清除监听
})


<p>

三、其他思路

1. 使用provide/inject方式

对于祖孙组件通信,可以考虑使用Vue3提供的provide/inject功能。父组件通过provide提供数据,子组件或孙子组件通过inject获取数据。

vue
// 父组件</p>


import { provide, ref } from 'vue'
let message = ref('来自父组件的消息')
provide('msg', message)


<p>// 子组件或孙子组件</p>


import { inject } from 'vue'
const message = inject('msg')


<p>

2. 使用Pinia状态管理

如果项目规模较大,涉及多个组件之间的复杂通信,建议使用Pinia作为状态管理工具。它可以更好地管理全局状态,支持模块化开发,类型推断等功能。

在选择组件间通信方式时要根据具体场景进行权衡,对于简单的非父子组件通信,mitt是非常不错的选择;对于复杂场景,则需要考虑更完善的状态管理方案。

Image

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载