一、前言
浏览之前,你可能需要对 Vue Reactive 实现有一点了解
可以先阅读下面这两篇文章,可以留意调用函数中的参数
[1. Vue Reactive 响应式原理]( https://www.youdeyiwu.com/posts/1 )
[2. Vue Reactive 依赖追踪和触发更新]( https://www.youdeyiwu.com/posts/2 )
在 Vue Reactive 的依赖追踪中,使用 ReactiveEffect 类来表示依赖关系:
(packages\reactivity\src\effect.ts)
二、关键字段和方法
设置 _dirtyLevel 为 NotDirty,如果 effect 处于非激活状态,直接执行 fn 并返回结果
否则,保存当前的 shouldTrack 和 activeEffect,并将当前 effect 设置为 activeEffect,然后执行 fn,
最后,恢复之前的 activeEffect 和 shouldTrack 状态
三、依赖关系管理
ReactiveEffect 类通过维护一个依赖数组 deps 来跟踪所有依赖于该 effect 的依赖集合
当 effect 被触发时,它会遍历这些依赖集合,并根据脏度级别决定是否需要重新执行 fn
在开发模式下,还会调用调试回调函数 onTrack 和 onTrigger 以提供调试信息。
四、其他
学习的记录,仅供参考