响应式 API
Vue 3 的响应式工具详解
ref vs reactive
这是最核心的选择问题。
ref
特点:
- 可以包裹任意类型(基本类型、对象、数组)
- 通过
.value访问和修改 - 本质是创建一个包含 value 属性的响应式对象
- 推荐全用 ref,减少心智负担
reactive
特点:
- 只能是对象(plain object)
- 解构会失去响应式
- 不能替换整个对象
- 适合组合相关联的状态
什么时候选哪个?
性能优化 API
shallowRef
只代理第一层,用于大数据量优化:
适用场景:大数据量列表、第三方库实例(如 ECharts)。
shallowReactive
只代理第一层属性:
readonly / shallowReadonly
适用场景:Provide 给子组件、Hook 返回值防止意外修改。
工具 API
toRaw
从 Proxy 取回原始对象:
用途:性能逃逸、避免 Proxy 开销、调用第三方库方法。
markRaw
标记对象永不响应式:
适用场景:第三方库实例、包含循环引用的对象、不需要响应式的大数据。
isRef / isReactive / isReadonly
unref
如果参数是 ref,返回 value,否则直接返回:
toRefs / toRef
将 reactive 对象的每个属性转成 ref:
应用场景:解构 reactive 后保持响应式。

