Vue组件通信全篇
说到Vue3的组件通信,还得从Vue2的组件通信说起, 小伙伴们查漏补缺哈
首先我们来看下组件的几种用法循序渐进:
Vue2的用法总结下帮助小伙伴们加深下记忆,如果还没不是很熟悉基础的小伙伴可以去看下官网。
-
父子组件通信
- props 父到子
- $emit 子到父
- ref、$refs 子到父
- $parent 子到父
- $children 父到子 (Vue3此方法作废)
-
多层级父子组件通信
-
provide、inject 父到子 或者 子到父
// provide 声明 provide() { return { title: '我是app', ComApp: this, } } // inject 使用 // 使用的时候可以拿到父组件的this也就是ComApp进行传递数据 inject: ['title', 'ComApp'],
-
$attrs 利用属性的传递数据配合inheritAttrs使用
-
$listeners (Vue3此方法作废监听功能是 attrs的一部分)
-
-
非关系组件通信(EventBus也称为事件总线)
Vue2的EventBus:
// eventBus.js const eventBus = new Vue() export default eventBus
// ChildComponent.vue import eventBus from './eventBus' export default { mounted() { // 添加 eventBus 监听器 eventBus.$on('custom-event', () => { console.log('Custom event triggered!') }) }, beforeDestroy() { // 移除 eventBus 监听器 eventBus.$off('custom-event') } }
<