Vue3 组件通讯

一、父传子:

通过props属性

父组件


子组件

二、子传父:

通过$emit触发事件

子组件
父组件

三、非父子:

1. provide / inject(传递 / 接收)- options Api写法

App.vue --> Home.vue --> HomeContent.vue

2. provide / inject(传递 / 接收)- composition Api写法

tip: provide传递参数可使用readonly包裹,防止子孙组件控制父组件。

3.mitt全局事件总线

3.1 安装库:npm install mitt

3.2 引入:import mitt from "mitt"

3.3 定义:const emitter = mitt()

3.4 使用:

           3.4.1  发送自定义事件:emitter.emit("why", { name: "why o" })

           3.4.2  监听单个自定义事件(info:接收参数): emitter.on("why", (info)=>{})

           3.4.3  监听所有自定义事件(type:监听事件 info:接收参数): emitter.on("*", (type, info) => {})

           3.4.4  取消监听单个自定义事件(onFoo:自定义事件的回调): emitter.off('why', onFoo)

           3.4.5  取消监听所有自定义事件(info:接收参数): emitter.all.clear()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容