Vue 计算属性如何实现依赖收集与派发更新

冰川箭仙

冰川箭仙

2026-06-10

718人浏览

原创

vue计算属性通过响应式系统自动完成依赖收集与派发更新:读取时记录依赖,修改时精准通知重算;getter执行时收集真实访问的响应式字段,set触发时标记dirty并惰性更新,结果缓存且仅在依赖变化时重新求值。

vue 计算属性如何实现依赖收集与派发更新

Vue 计算属性的依赖收集与派发更新,不是靠定时检查或手动触发,而是依托整个响应式系统自动完成:读取时记下谁在用,修改时精准通知谁重算。

计算属性的 getter 触发依赖收集

当组件首次渲染或 computed 第一次被访问时,其 getter 函数会同步执行。此时 Vue 正处于依赖收集状态(activeEffect 存在),只要 getter 内部读取了响应式字段(如 this.athis.list[0].name),就会触发该字段的 get 拦截(Vue 3)或 getter(Vue 2),进而调用 track() 把当前计算属性对应的 effect 记录到该字段的依赖集合中。

关键点:

  • 只收集真实读取的字段,没用到的不会进依赖列表
  • 嵌套对象、数组索引、响应式 Map/Set 的访问都会被 track 到(Vue 3 支持完整拦截)
  • 异步代码(setTimeoutPromise.then)里读取的数据不参与收集

数据变更时触发派发更新

当某个被依赖的响应式属性被赋值(例如 this.a = 'new'),其 set 拦截器会立即运行 trigger(),查找该属性对应的所有 effect,并将它们标记为“待更新”。

Vue-router参考手册
Vue-router参考手册

Vue-router参考手册下载

下载

对计算属性而言,这个 effect 是一个 lazy watcher(Vue 2)或带 lazy: true 的 ReactiveEffect(Vue 3)。它不会立刻执行 getter,而是:

  • 把自身 dirty 标志设为 true
  • 等待下一个微任务(nextTickqueueJob)统一调度
  • 批量、惰性地重新求值,避免重复计算

缓存机制让多次访问不重复执行

计算属性的结果会被缓存,后续访问直接返回 value,不再进入 getter,除非依赖已变(dirty === true)。

这和 methods 有本质区别:

  • methods 是普通函数,每次调用都执行,不走响应式调度,也不缓存
  • computed 被包装为响应式引用,自带依赖追踪、脏检查、结果缓存三件套
  • 即使多个地方使用同一个 computed,也只维护一份依赖关系和一个缓存值

依赖变化后如何确保视图更新

计算属性本身不直接操作 DOM。它的更新会间接驱动视图:

  • 如果该 computed 被模板使用(如 {{ fullName }}),模板的渲染 effect 会依赖这个 computed 的返回值
  • 当 computed 重新求值后,其 effect 会通知上层渲染 effect,触发 patch 和 DOM 更新
  • 若 computed 被其他 computed 或 watch 使用,也会触发对应 effect 的更新链

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关专题

更多
Maven零基础入门教程
Maven零基础入门教程

本合集由PHP中文网精心整理,提供Maven零基础入门到完整使用的保姆级教程。内容涵盖环境安装、核心配置、仓库管理及项目构建等核心知识点。通过详细步骤解析与代码示例,助你快速掌握Maven的依赖管理与自动化构建,轻松解决Java项目中的各种痛点,是新手入门与进阶的必备指南。

2026.08.05

2

18

Maven安装及配置教程
Maven安装及配置教程

本合集由PHP中文网精心整理,提供Maven安装配置与环境配置详情指南。内容涵盖Maven下载、解压安装、环境变量配置、阿里云镜像加速及本地仓库修改等全流程。教程通俗易懂,帮助开发者轻松解决依赖管理难题,快速掌握Maven核心构建技能,是Java开发者的必备实战指南。

2026.08.05

2

24

Selenium WebDriver元素定位与页面操作教程
Selenium WebDriver元素定位与页面操作教程

本专题整理Selenium WebDriver元素定位、XPath、CSS Selector、等待机制、窗口切换、Frame处理、Alert弹窗、Cookie操作和文件上传等核心用法。

2026.08.05

8

26

Selenium Grid分布式测试与并行执行教程
Selenium Grid分布式测试与并行执行教程

本专题整理Selenium Grid架构、远程WebDriver、并行测试、Docker部署、Kubernetes动态Grid、浏览器矩阵和测试环境扩展方法,适合进阶自动化测试团队使用。

2026.08.05

4

18

Selenium常见报错排查与自动化测试稳定性
Selenium常见报错排查与自动化测试稳定性

本专题整理Selenium常见报错、驱动版本问题、元素找不到、点击失败、等待超时、浏览器闪退、脚本不稳定和测试用例维护方法。

2026.08.05

0

17

墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

31

21

墨刀AI完整入门
墨刀AI完整入门

PHP中文网为您倾力打造墨刀AI保姆级入门指南完整版!本合集从零基础讲起,涵盖AI生成原型、提示词优化、图片转原型及多轮对话等核心功能。无论您是新手还是进阶用户,都能轻松掌握产品设计全流程。快来PHP中文网,一键解锁高效设计技巧,让想法即刻成型!

2026.08.04

8

20

墨刀AI进阶技巧
墨刀AI进阶技巧

本合集由PHP中文网精心整理,为您提供墨刀AI核心进阶策略指南。内容涵盖高效提示词写作、原型智能生成与微调、结构化导图制作及行业分析报告输出等实战技巧。助您轻松掌握AI设计工具,大幅提升产品设计与团队协作效率。

2026.08.04

10

14

火山引擎实名认证失败怎么办
火山引擎实名认证失败怎么办

火山引擎实名认证失败可能与证件信息填写错误、姓名或企业信息不一致、证件照片不清晰、营业执照状态异常、手机号验证失败或审核资料不完整有关。本专题整理个人认证、企业认证、资料上传、审核退回、重新提交和认证不通过的常见处理方法。

2026.08.04

5

10

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app快速上手
uni-app快速上手

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 15.6万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 2.2万人学习