tree diff 和 component diff的区别?

最近在学习react diff算法,有一个地方一直没弄明白,tree diff 和 component diff的区别在哪?

在我看来好像没有tree diff这一回事,都是component diff,同层的component比较了之后,同一个类型的就不变,不同类型的就把这个节点删掉(包括所有的子节点),挂上新类型的节点(还有它所有的子节点)

阅读 4.7k
2 个回答

包含和被包含的关系啊……

component diff 先看类型是否相同,相同的话就开始 tree diff 了啊……

tree diff 只会比较整棵树的结构,比如两棵树在同一个高度同一位置是不是有相同数量的子节点,但不会去比较这些子节点是不是一样,比较子节点之间的差异会在 component diff 中进行。

更细节的可以看React 源码剖析系列 - 不可思议的 react diff

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题