一. 概念定义差异
ref:响应式编程中的基础引用类型,通过.value访问包装值,适用于单个原始值的响应式跟踪(如字符串、数字)
const count = ref(0) // 显式声明响应式基础类型
reative(通常指Vue3的reactive):面向复杂对象结构的深度响应式API,自动解包嵌套属性
const user = reative({ name: '张三', profile: { age: 25 } // 嵌套对象自动响应 })
二. 核心特性对比
| 维度 | ref | reative |
|---|---|---|
| 数据层级 | 单层值包装 | 深层对象代理 |
| 访问方式 | 需要.value语法糖 | 直接属性访问 |
| TS支持 | 完善的类型推断 | 需要手动定义复杂类型 |
| 内存开销 | 轻量级包装器 | 完整的Proxy代理树 |
三. 典型使用场景
ref的黄金法则
1、表单输入绑定(文本/数字)
<input v-model="username.value">
2、组件模板引用
<ChildComponent ref="childComp" />
3、需要显式控制响应触发的场景
reative的最佳实践
1、复杂状态管理(如用户信息对象)
const store = reative({ cartItems: [], paymentMethod: 'alipay' })
2、API响应数据嵌套处理
fetch('/api').then(res => { Object.assign(data, res) // 保持响应性 })
3、需要深度监听的配置对象
四. 混合使用策略
建议采用ref处理基础类型+reative管理对象状态的组合模式:
const appState = reative({ loading: ref(false), // 基础状态 config: { theme: 'dark' } // 复杂配置 })