Lazy loaded image
技术分享
Vue 组件通信中常用的 6 种方式
字数 698阅读时长 2 分钟
2021-3-13
2025-5-9
type
status
date
slug
summary
tags
category
icon
password

Vue 组件通信中常用的 6 种方式

在 Vue 项目开发中,组件之间的通信是一项必备技能。本文将为你梳理 Vue 中最常见的 6 种组件通信方式。

一、props$emit:父子组件通信

父组件通过 props 向子组件传递数据,子组件通过 $emit 向父组件发送事件。
✅ 适用于:父子组件之间数据和事件传递

二、provide / inject:跨层级通信

Vue 2.2+ 开始支持 provideinject,用于祖孙组件通信。
✅ 适用于:深层组件嵌套的依赖注入
⚠️ 注意:默认不是响应式的,建议结合 Vue.observable 或 Vuex 管理状态

三、事件总线:非父子组件通信

使用空的 Vue 实例作为中央事件总线,实现跨组件通信。
✅ 适用于:兄弟组件、解耦通信

四、Vuex:状态管理

Vuex 是官方提供的状态管理模式,适用于中大型项目。
✅ 适用于:跨组件共享状态

五、$refs 操作子组件实例

使用 $refs 可以访问子组件实例并调用其方法。
✅ 适用于:调用子组件方法的场景

六、全局事件 / 全局属性

可以通过 Vue 原型链添加全局方法或属性(注意性能和可维护性)
✅ 适用于:工具函数封装、插件式功能注入

总结:通信方式对比表

方式
适用场景
是否响应式
是否推荐
props/$emit
父子组件
✅ ✅ ✅
provide/inject
多层嵌套组件
⚠️(需搭配响应式手段)
事件总线
任意组件
✅(适用于小型项目)
Vuex
中大型项目
✅ ✅ ✅
$refs
获取方法
Vue.prototype
工具封装
⚠️ 不推荐滥用
 
上一篇
了解安全登录之双 Token 机制
下一篇
关于Browser Tools MCP Server