React/Vue 中虚拟DOM中的diff算法为什么是O(n)?
diff 时新旧两个tree的子节点对比时,要去找旧节点中对应的key节点,这种需要两层循环,难道时间复杂度不是O(n*n)吗?
我能想到是O(n)的方法是将旧节点中的具有key的节点先遍历一次用hash存下来
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因为在算法中理论上他们生成的树的结构应该是一模一样的,同样的位置上的dom应该是一样的。不一样的话,就触发更新了
看到一个文章确实是用了hash(map),当从头到尾一一比较存在key对应不上时,就用map来存储oldFiber中有key的节点