• 润培
    2021-12-24
    刚刚提了一个PR

    作者回复: 给力给力

    
    6
  • 小胖
    2021-12-24
    track函数哪里,依赖的添加,最后老师的判断是有问题的,那样写的话对于一个key就只能添加一次依赖。 // 测试用例改成下面这样,就过不了了 let val let val2 effect(()=>{ val = ret.num }) effect(()=>{ val2 = ret.num }) expect(val).toBe(0) expect(val2).toBe(0)

    作者回复: 已经支持这个测试案例了,把deps.add移到!dep的判断外层

    
    3
  • Kim Yin
    2021-12-24
    track 函数的 20~27 行好像有点问题,感觉应该把 22~26 行移到 if (!deps) 外面,不然 deps = new Set() 以后,if (!deps.has(activeEffect) && activeEffect) 这句判断就没意思了 —— deps.has(activeEffect) 永远为 false

    作者回复: 已经加上了这个test,deps.has判断移动到if外面了,灰常感谢提出bug

    
    3
  • openbilibili
    2022-01-05
    你好,问一下,你看的vue是哪个版本的?我对照一些 vue源代码 和 weiyouyi的代码,有些地方不太相同,但是又无法理解。

    作者回复: weiyouyi是简版的,我看的代码是3.2之前的版本,3.2之后的响应式会有位运算的优化

    
    
  • 润培
    2021-12-24
    相比于 Vue2 使用的 Object.defineProperty,Vue3 不需要提前递归收集依赖,初始化的速度更快; Vue2 收集依赖的过程中会产生很多的 Dep 对象,Vue3 可以节省这部分的内存开销; Vue2 无法监听数组、对象的动态添加、删除,需要通过 $set、$delete,增加学习成本; Vue2 无法监听 Set、Map,只能处理普通对象。
    
    13
  • Geek_13e539
    2022-01-20
    computed的讲解还能再详细一点么?看了几次 也还是没太理解
    共 1 条评论
    8
  • Hector
    2022-03-22
    这一篇搭配《vue.js的设计与实现》真是相得益彰。
    
    2
  • 来个offer
    2022-06-12
    哪里来的activeEffect?没看到啊
    
    1
  • 子阳
    2022-01-17
    经过一个星期的学习,终于自己实现了。无比的高兴。继续挑战下一章
    
    1
  • cxwcfea
    2023-07-20 来自广东
    这个实现里的, computed 中的 track 和 trigger 应该都没有实际发挥作用吧。key值都传的不对。然后 computed 的逻辑看起来本来也不需要直接调用 track 和 trigger
    
    