Vue 单文件组件怎么使用 shallowRef 优化深层嵌套

轻婷吖_3758

轻婷吖_3758

2026-10-21

112人浏览

原创

shallowref 用于 vue 单文件组件中精准控制响应边界,仅对顶层数据响应,跳过深层字段的 proxy 初始化;修改需赋值 .value,内部字段变更不响应,可配合 triggerref 主动触发更新,并与 markraw 协同处理不可响应对象。

vue 单文件组件怎么使用 shallowref 优化深层嵌套

在 Vue 单文件组件中用 shallowRef 优化深层嵌套,关键是让响应式只作用于你真正需要更新的层级,跳过内部字段的 Proxy 初始化和依赖收集。它不是“禁用响应式”,而是“精准控制响应边界”。

只对整块数据做顶层响应

当某个嵌套对象整体作为不可变单元使用(比如表格原始数据、菜单配置、API 快照),你只会在切换页、刷新列表、替换整个结构时才需要触发更新,那就该用 shallowRef:

  • 用 shallowRef(data) 替代 ref(data) 或 reactive(data)
  • 修改时必须赋值给 .value,例如 list.value = newData 才会触发更新
  • 直接改内部字段如 list.value[0].status = 'done' 不会响应——这正是你要的效果

配合 triggerRef 主动通知变更

有时你确实需要在不替换整个对象的前提下“告诉 Vue:这部分内容变了”,比如手动更新了 shallowRef 包裹对象的某个字段:

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

Vue 3 组合式 API 与

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.2万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习