作为标题,本文是阅读反应源代码实现过程的过程:
从上面的代码中可以看出,反应性通过调用createrActiveObject函数来创建响应对象。其执行过程如下:
近距离:这是一个弱图,在创建响应对象的过程中在性能优化中起着作用。如果是这样,您就不需要再次创建它。WeakMap保留每个关键对象的“弱参考”,这意味着当没有其他参考时,垃圾回收可以正确执行垃圾回收
上面的代码仅将目标包装在CREASTEACTIVEOBJECT中的响应对象的代码中。响应实现包含在代理的处理程序参数中,该参数对应于BaseHandler。
可以从上面的代码中可以看出baseHandlers.get是CreateGeter函数的返回值。让我们分析以下此功能的实现
收集依赖项的入口在轨道功能上。以下分析了此功能的具体实现:
变量简介:
TargetMap的结构图标:轨道函数的执行过程也很明确:
无论是反应性还是裁判的依赖性,它们都在trackefect中完成
当我们重新分配响应对象的属性时,我们将触发页面更新,计算或观察重新计算或执行。这里的核心实际上是通知依赖项更新的过程。更新入口在CreateSetter的返回函数中:
判断目标是否具有通过HADKEY的条目属性,此处将忽略目标原型的属性。如果是操作原型,则不会触发更新过程。通知取决于更新的导入函数是Tigger函数
触发功能的逻辑很明显: