简介
Mitt是一个小巧而强大的 JavaScript 事件总线库,用于处理事件的发布和订阅。
用法示例
1、使用vite
创建示例项目
项目名称:mitt-demo
框架:vue.js 3
bash
$ yarn create vite
√ Project name: ... mitt-demo
√ Select a framework: >> Vue
√ Select a variant: >> JavaScript
2、进入示例项目根目录并安装依赖
bash
# 进入项目根目录
$ cd mitt-demo
# 安装依赖
$ yarn
3、在项目中安装mitt
bash
# 安装mitt
$ yarn add mitt
4、创建bus.js
文件
在src
文件夹下创建utils
文件夹,然后在utils
文件夹下创建bus.js
文件,bus.js
文件内容如下:
js
import mitt from 'mitt'
// 创建事件总线实例
const emitter = mitt()
export default emitter
我们在bus.js
文件中通过mitt()
创建了一个事件总线实例,用于发布和订阅事件。
5、创建事件发布组件 ------ EventPublisher.vue
在src/components
文件夹下创建事件发布组件 ------ EventPublisher.vue
,文件内容如下:
vue
<script setup>
import { ref } from 'vue'
import emitter from '../utils/bus'
const count = ref(0)
// 事件发布方法
const publish = () => {
console.log('== 发布事件 ==')
emitter.emit('incr', count.value += 1)
}
</script>
<template>
<button @click="publish">发布事件</button>
</template>
<style scoped>
</style>
6、创建事件监听组件 ------ EventListener.vue
在src/components
文件夹下创建事件监听组件 ------ EventListener.vue
,文件内容如下:
vue
<script setup>
import { ref, onBeforeMount, onMounted } from 'vue'
import emitter from '../utils/bus'
const count = ref(0)
onMounted(() => {
// 监听事件
console.log('== 监听事件 ==')
emitter.on('incr', (res) => {
count.value = res
});
})
onBeforeMount(() => {
// 取消监听
console.log('== 取消监听 ==')
emitter.off('incr')
});
</script>
<template>
<div class="listener">消息内容:{{ count }}</div>
</template>
<style scoped>
.listener {
background-color: beige;
}
</style>
7、修改App.vue
在App.vue
中引入事件发布组件、事件监听组件。
vue
<script setup>
import EventPublisher from './components/EventPublisher.vue'
import EventListener from './components/EventListener.vue'
</script>
<template>
<event-publisher></event-publisher>
<event-listener></event-listener>
</template>
<style scoped>
</style>
8、启动项目,查看效果