vue3移除了vue2原有的 o n 、 on、 on、emit,因此事件总线推荐使用第三方库实现,详情参考官方文档,这里主要记录使用mitt的实现。
- 安装mitt
npm i mitt --save
- 创建事件总线文件
import mitt from 'mitt';
export const emitter = mitt(); // 返回值是一个对象
/*
也就是说 emitter中一共包含以下几个属性方法:
on:为给定类型注册事件处理程序;
====》 emitter.on('type',(...args)=>{}) type:监听的事件类型,为*时监听所有的事件 args:用于接收传递的值
all:事件名称到注册处理程序函数的映射,主要用于监听所有的事件时使用,不需要重复的书写on去监听;
off:用于移除事件监听,回调函数中类型为*时表示移除所有监听的事件;
emit:用于发送自定义事件
*/
- 在需要通信的两个组件之间引入上述文件:
假设目录结构如下所示:
层级关系为app>>>sub1>>>sub2,我们要从app到sub2实现通信;
首先在sub1中引入mitter对象:
<template>