shallowreactive创建仅顶层属性响应的对象:state.a修改触发更新,state.b.c修改不触发;适用于外层稳定、顶层字段频繁变更且内层静态的场景。

用 shallowReactive 创建浅层响应式对象,核心就一点:只让对象第一层属性具备响应性,内部嵌套对象保持“普通”状态,不被 Vue 的响应式系统追踪。
什么时候该用 shallowReactive
适合外层结构稳定、但顶层字段频繁变动的场景。比如一个配置对象,整体结构不变,但开关状态、主题色、是否启用等顶层字段经常切换;而深层的默认值、模板结构、静态 schema 不会动态修改,也不需要监听变化。
- 数据本身嵌套很深,但实际只改最外层字段(如
isActive、theme) - 性能敏感,避免对大量静态嵌套对象做 Proxy 包装和依赖收集
- 你明确知道内层属性不会被直接修改,或修改后会整体替换(这时用
shallowRef更合适)
怎么写才生效
直接导入并传入一个普通对象,返回的就是浅响应式代理。注意:它不带 .value,用法和 reactive 一样,是“对象直用”风格。

