在使用Vue3构建中大型web应用时, 组件通信 肯定是不可避免的。本文就具体介绍一下使用Vue3的 props、 $emit、expose / ref、$attrs、v-model、provide / inject、Vuex、mitt 等方式进行组件通信。

用 props 传数据给子组件有两种方法,如下
Option API + setupVue3 写法:Composition API(<script setup>)注意:
Vue3 写法的话,是接收不到父组件里 data 的属性,只能接收到父组件里 setup 函数里传的属性。Vue3 写法,子组件混合写法,可以通过 props 接收到 data 和 setup 函数里的属性,但是子组件要是在 setup 里接收,同样只能接收到父组件中 setup 函数里的属性,接收不到 data 里的属性。Composition API(<script setup>)。父组件获取子组件的属性或者调用子组件方法
attrs:包含父作用域里除 class 和 style 除外的非 props 属性集合 。可以支持多个数据双向绑定
provide:可以为后代组件提供数据和事件。inject:在任何后代组件中接收想要添加在这个组件上的数据,不管组件嵌套多深都可以直接拿来用。详细事例可参考:Vuex状态管理
在Vue3 中没有了 EventBus 跨组件通信,但是现在有了一个替代的方案 mitt.js,原理还是 EventBus。
先安装 mitt.js
然后像以前封装 EventBus 一样,封装:
然后在两个组件之间通信使用:
欢迎访问:天问博客