vue3+ts学习(十七):vue3-provide/inject父传子孙组件通信,使用mitt库实现兄弟组件通信

133 阅读1分钟

provide/inject父传子孙

在Vue2.2.0之后,Vue提供了provide/inject选项

父组件提供数据:

image.png

子孙组件inject接收直接使用:

image.png

使用全局事件总线mitt库,兄弟组件传递

vue3舍弃了EventBus,但是官方推荐一个mitt库使用事件总线

npm install mitt

在utils下创建eventbus.js配置文件

// eventbus.js 
import mitt from "mitt" 
const emitter = mitt() 
export default emitter 

// vue文件 
import emitter from "../utils/eventbus"
// 通过emit发送事件 
emitter.emit("getInfo", { 
    name:"张三", age:18 
}) 
// 通过on接收事件 
created(){ 
    emitter.on("getInfo",(info)=>{
        console.log('info: ', info); 
        }) 
    // 这里*是监听所有事件,type为事件名 
    emitter.on("*",(type,info)=>{
        console.log('info: ',type, info); 
    }) 
}

image.png