组件更新这块有点水哎

来源:5-9 组件更新(3)

小星星要努力变强

2020-06-10

我是跳着看的,对patch的diff算法比较好奇,所以先看了组件更新这块的逻辑,这块真的觉得有点水哎

个人感觉就是按代码讲了一下,但是关键的点还没讲到,比如updateChildren:
1. 为什么要对比oldStartIndex,oldEndIndex,new。。。这四个。
- 答:这是一种优化策略,如果直接上来遍历的话,会浪费很多性能,因为大多数情况下,我们只是组件中的某个元素发生了变化,而不是全部。
2. 当对比不成功如何处理,这里面又涉及了我们常见的要给循环里面的元素设置key的问题。
等等等

  • 建议还是要将一些为什么要这么做,而不是流水的讲。
写回答

1回答

ustbhuangyi

2020-06-10

diff 算法性能上面的优势视频里有提到,不知道你有没有认真看。
多说一些为什么,这个建议我是接受的。课程有不少地方应该就是这种思路去讲的。

视频录制完了改不了,有些章节可能有地方没有讲好,不过你要有什么问题想讨论的,欢迎来问答区与我讨论。

PS: 你的答案我觉得也水,什么叫“如果直接上来遍历的话,会浪费很多性能”,能详细解释一下吗?

0
5
小星星要努力变强
回复
ustbhuangyi
1,使用两端对比找到后也是进行patchVnode,在oldCh里面遍历找到之后也是进行patchVnode呀,?我的想法感觉又绕回来了,我又觉得是两端对比确实减少了在oldCh里面进行循环查找了。如果不是这样的话为什么要先两端对比这个就很很困惑。。 2,这个明白了,是进行了patchVnode。我查找的时候不小心改了,所以弄错了。。。嘻嘻嘻,
2020-06-12
共5条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4984 学习 · 1037 问题

查看课程