深入解析PRCM寄存器:掌握SoC低功耗设计的核心机制
2026/7/20 16:24:03
shallowRef 和 shallowReactive 是 Vue 3 提供的两个用于创建浅层响应式数据的 API,它们在处理嵌套数据结构时与 ref 和 reactive 有本质区别,主要优势在于性能优化。以下从核心概念、原理、使用场景和关键差异等方面进行对比总结。
.value属性的顶层赋值操作进行响应式追踪,如果.value是引用类型(如对象或数组),其内部的嵌套属性不会被转换为响应式,修改深层属性不会触发视图更新。12Object.defineProperty监听.value的赋值,但不会递归代理深层结构。get/set操作,深层属性直接返回原始值。| 特性 | shallowRef | shallowReactive |
|---|---|---|
| 响应式范围 | 仅.value的顶层赋值触发更新(如ref.value = newObj) | 仅对象顶层属性触发更新(如obj.key = 1) |
| 深层属性修改 | 修改.value.nested.key = 1不触发更新 | 修改obj.nested.key = 1不触发更新 |
| 支持的数据类型 | 支持基本类型和引用类型 | 仅支持对象或数组(传入基本类型静默失效)1 |
| 性能特点 | 避免对深层嵌套结构进行响应式转换,适合大型数据优化 | 减少递归代理开销,提升复杂对象的渲染效率23 |
ref一致,但可用于统一 API 风格。triggerRef()手动触发深层修改后的更新,例如批量修改对象内部属性后强制刷新视图。shallowRef可包装任意类型,而shallowReactive仅对对象/数组生效。shallowRef更适合值类型或整体替换,shallowReactive侧重对象结构的顶层响应。shallowRef。shallowReactive。ref或reactive以确保自动追踪。