Skip to content

组件间通信

在Vue中,组件间通信是一个核心概念,因为Vue的组件实例的作用域是独立的。这意味着不同组件之间的数据无法直接相互引用。为了解决这个问题,Vue提供了多种组件间通信的方法,适用于不同的场景,如父子组件通信、兄弟组件通信和跨级组件通信。

常用通信方式对比

方式场景实现
props父组件传递数据给子组件子组件设置 props 属性接收,父组件在子组件标签通过字面量传递值
$emit子组件传递数据给父组件子组件通过 $emit 触发自定义事件
父组件绑定回调函数获取子组件传递的参数
$ref和$children(已废弃)父组件获取子组件引用父组件通过设置子组件 ref 获取子组件实例对象上的数据/方法
$parent和$root祖先组件传递数据给子孙组件兄弟组件通过 $parent.$emit 触发事件
另外的兄弟组件通过 $parent.$on 监听事件
$attrs和$listeners祖先组件传递数据给子孙组件$attrs 包含了父作用域中不作为props被识别的绑定
$listeners 包含了父作用域中的v-on事件监听器
provideinject祖先组件传递数据给子孙组件在祖先组件定义 provide 属性,返回传递的值
在后代组件通过 inject 接收组件传递过来的值
EventBus复杂关系组件传递数据创建一个中央事件总线
一个组件通过 $emit 触发事件
一个通过 $on 接收事件
状态管理工具(Vuex)复杂关系组件传递数据集中式存储管理应用的所有组件的状态

Released under the MIT License.