Vue 响应式 API 与组件通信的结合:ref 与 reactive

陌婷同学_8461

陌婷同学_8461

2026-06-29

235人浏览

原创

ref 和 reactive 是 vue 3 响应式通信的底层基础而非直接通信机制,它们为 props、emit、v-model、provide/inject 等提供响应性支持;ref 用于单值追踪,reactive 用于对象/数组的深层响应;二者在父子通信、双向绑定、跨层级注入中协同工作,但需注意替换对象、解构丢失响应性及 .value 访问等关键细节。

vue 响应式 api 与组件通信的结合:ref 与 reactive

Vue 3 的响应式 API(ref 和 reactive)本身不直接负责组件通信,但它们是实现通信的底层基础。真正完成父子、兄弟或跨层级通信的,是 props、emit、v-model、provide/inject、mitt 或 pinia 等机制——而这些机制背后依赖的,正是 ref 和 reactive 提供的响应式能力。

ref 和 reactive 是“数据管道”,不是“通信协议”

你可以把 ref 和 reactive 理解成给数据装上“监听器”的工具:

  • ref 让单个值(如字符串、数字、布尔)可被 Vue 追踪变化;
  • reactive 让整个对象或数组的所有属性自动具备响应性。

没有它们,父组件传给子组件的 props 就只是静态快照,子组件内部修改不会触发更新;emit 出去的新值也无法被父组件的 ref 变量实时捕获;v-model 绑定的 input 值更不会自动同步到 data 中。

在常见通信场景中,它们怎么配合工作?

父子通信(props + emit)

  • 父组件用 ref 或 reactive 定义状态,再通过 props 传给子组件;
  • 子组件接收 props(只读),但若需修改并通知父组件,就调用 emit('update:xxx', newValue);
  • 父组件监听该事件,并用 .value = newValue(ref)或直接赋值(reactive 对象属性)更新本地响应式数据。

v-model 双向绑定

  • v-model="title" 实际是 :model-value="title" @update:model-value="title = $event" 的语法糖;
  • 只要 title 是 ref('') 或 reactive({ title: '' }) 中的响应式字段,就能实时同步。

provide / inject

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app快速上手
uni-app快速上手

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 17.1万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 2.5万人学习