对“深度比较”的逻辑有一些问题。
来源:4-12 深入diff算法源码-patchVnode函数

Hard_Black_
2022-07-27
老师,这几章看完有一些问题请教您一下。
1、diff算法原则说的tag和key都相同时,不再深度比较是指不再对当前新旧vnode的其他除children属性再作比较吗,直接默认新旧的两个vnode的其他属性全都一致吗?这个“深度”的含义似乎和之前章节的深度监听还有深拷贝的“深”不是同一个意思,这里的“不再深度比较”实际上还是要对两者的children进行比较,而深度监听和深拷贝是明确了要对其子属性进行递归遍历。似乎这两种“深度”的意义完全不同。
2、如果出现两个tag相同,key都为undefined的vnode,但是它们的其他某些属性不同,比如绑定了不同的事件,这个时候diff算法只对tag和key作比较,不就会导致vnode绑定的事件不会被更新吗?这种情况会发生吗,或者发生了又会怎么处理呢?
写回答
1回答
-
双越
2022-07-27
tag 和 key 相同,则不再深度比较 —— 这个是一个理论指导。
具体实现上会有不同的细节处理
00
相似问题