answershuto / learnVue

:octocat:Vue.js 源码解析
https://github.com/answershuto/learnVue
12.66k stars 2.58k forks source link

模拟代码错误 #62

Open lazyunderscore opened 4 years ago

lazyunderscore commented 4 years ago

开始依赖收集 class Vue { constructor(options) { this._data = options.data; observer(this._data, options.render); let watcher = new Watcher(this, ); } }

  1. watcher的定义应该在observer之前,否则,defineReactive 无法获被添加到watcher
  2. watcher定义缺少参数
lazyunderscore commented 4 years ago

我理解错了。看样子是第一次执行observe,是不会收集到依赖。new wathcer 的时候触发getter, 这时候,在getter执行的时候,收集到依赖。这是可行的。但是那个Dep.target的重置为null的操作,不知道为什么放到外边来。new Vue之后,应该就可以重置为null了。