首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
讲讲 Vue3 响应式系统中的依赖收集与触发(effect、
[问答题]
讲讲 Vue3 响应式系统中的依赖收集与触发(effect、scheduler)。
添加笔记
求解答(0)
邀请回答
收藏(10)
分享
纠错
4个回答
添加回答
1
邵鸿博
Vue 3 的响应式系统通过 effect(副作用函数)自动追踪其内部依赖的响应式数据(依赖收集),并在数据变化时通过trigger通知effect重新执行;scheduler作为调度器,可以控制effect的执行时机与方式(如批量异步更新),是实现高性能的关键。
发表于 2026-03-31 20:25:51
回复(0)
0
秋木苏76
vue3响应式系统会为需要响应式的对象创建proxy代理,在proxy里的getter方法调用track方法,并用reflection强制指定track方法的this指向当前的代理对象。在track里主要是是收集依赖,触发一次effect让weakMap记录当前变化的对象属性和具体执行的方法之间的依赖关系。当修改该属性时候触发setter,在setter里调用trigger方法,去寻找weakMap中记录的具体执行方法,然后去具体执行。
发表于 2026-03-13 15:45:11
回复(2)
0
rr超级牛牛
vue3响应式系统通过effect自动追踪其内部依赖的响应式数据,并且在数据变化的时候用trigger通知effect重新执行。schedulter做为调度器,可以控制effect执行的时机和方式如批量修改数据,当effect运行并且读取数据,数据的getter就会调用track建立当前数据-运行effect之间的关系,当响应式数据被修改的时候,setter会调用trigger函数,会根据之前记录的关系,找到所有依赖了这个数据的effect,调度器是创建effect可选的一个配置项,当effect配置了scheduler,不会直接执行该effect,而是改为执行这个schedule函数,这个调度去会将多个同步数据变更所触发的更新推进一个微任务队列,在当前同步任务完毕后执行一次更新,避免不必要的重复渲染。effect的track和trigger构成了响应式的自动联动机制,而chedule是这个机制的智能指挥中心。
发表于 2025-11-06 09:18:49
回复(0)
0
安吉拉娜娜
vue3响应式系统通过effect自动追踪内部依赖的响应式数据,在数据变化时触发trigger通知effect重新执行,schedule调度器则是可以去控制effect的执行时机和方式(批量更新),是高性能的关键。 1、依赖收集 (getter会调用 track 函数) 2、依赖触发(setter会调用trigger函数) 3、调度器(1、批量异步更新,多个同步的数据变更触发的effect推进一个微任务队列,统一执行一次,减少不必要的重复渲染;2、控制执行时机watch可以配置flush:'post'就是通过调度器实现的,可以决定毁掉函数实在dom更新前还是更新后执行)
发表于 2025-11-04 23:21:50
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
来自:
Vue-牛客面经八股
难度:
4条回答
10收藏
442浏览
热门推荐
相关试题
Vue3 中多级通信与解耦:Com...
评论
(2)
来自
Vue-牛客面经八股
v-if 和 v-show 的区别...
评论
(8)
来自
Vue-牛客面经八股
介绍下大型表单的校验、联动与性能优...
评论
(2)
来自
Vue-牛客面经八股
路由守卫的执行顺序与典型权限控制方案。
评论
(4)
来自
Vue-牛客面经八股
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题