浅谈 vue3 响应式原理 第二篇 记录与重放
浅谈 vue3 响应式原理 第二篇 记录与重放
上一篇简单讲了一下什么是响应式,实现响应式的基本套路:在变量被设置新值的时候,重新执行一次副作用。
但是副作用有很多,我们不可能把每个副作用的执行都在 Proxy
中硬编码一遍,如何设计才能管理这么多副作用,这次来讲 vue3 实现响应式需要的数据结构。
副作用的存储
要完成响应式,我们上一篇讲了在变量执行 set
操作时将副作用重放一遍。但是一个程序有这么多变量,这么多副作用,vue3 是如何管理的呢?
首先这里引入一个新名词:depsMap
depsMap
是一个绑定属性与副作用的 Map
。他的 key 是变量的属性名,他的 value 是属性对应的副作用。