请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于tag和key相同的比较问题

老师你好,本节说同tag同key,认为是相同节点,不做深度比较。但是从理解上来说,同tag同key下,存在children不同的情况,而且看完snabbdom后,也正是在同tag同key的情况下做了深度比较,用updateChildren函数比较了子节点

正在回答 回答被采纳积分+3

2回答

提问者 Harby_C 2020-04-26 14:48:31

也就说一般的diff算法理论是同tag同key不做深度比较。但是由于vue参考的是snabbdom库实现的vdom和diff,在面试中被问到vue的diff算法时,是不是就该按照snabbdom的特性来回答,即直接表述同tag同key时,才做深度比较。不然在描述细节的时候会显得跟同tag同key不做深度比较的理论对应不上

0 回复 有任何疑惑可以回复我~
  • 双越 #1
    如果问到具体实现方式,你可以参考 snabbdom 的方式来说。如果问到 diff 算法的时间复杂度,你可以说课程里提到的三条优化。
    回复 有任何疑惑可以回复我~ 2020-04-26 16:01:59
  • 提问者 Harby_C 回复 双越 #2
    好的 谢谢老师的解答
    回复 有任何疑惑可以回复我~ 2020-04-26 16:23:33
双越 2020-04-26 14:22:06

同 key 同 tag ,即 sameNode ,则不会向下继续比较 —— 这是 diff 算法的一个理论指导。

但实际不同 lib 的实现上,还会存在差异,例如 snabbdom 的逻辑。这也是很正常的事情。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信