一步步解读VUE3源码系列08 - stop方法优化 边缘case处理
发布网友
发布时间:2024-10-16 15:31
我来回答
共1个回答
热心网友
时间:2024-10-18 09:29
理解Vue3源码中的stop方法边缘情况
在使用Vue3的stop方法包裹监听对象后,可以避免收集依赖,从而防止触发事件。然而,在对已停止的监听对象执行自增操作时,先触发了get的track操作,导致之前清除的依赖再次被收集。
例如,在执行obj.prop++时,等同于执行了obj.prop = obj.prop+1。这触发了get操作,这时需要思考如何妥善处理这种情形。
答案就是,在track时新增一个参数来判断当前对象是否处于停止状态。
那么,在何时执行赋值操作呢?
答案在run方法里!
这样一来,问题得到解决。运行测试用例,结果完美无瑕。
从零开始学习Vue3,探索其源码奥秘。
如需进一步了解,欢迎访问GitHub仓库,期待您的star和fork。