原文:https://zhuanlan.zhihu.com/p/20346379react
总结一下我的看完以后的理解:算法
一、tree diff:只对相同层级的节点进行比较,若是子树在新树种不存在了,则直接删除。若是新加了树就是建立,那么若是进行了跨层级的树的移动怎么办?答案是直接删除移动前的树,在移动后的位置建立一颗如出一辙的。component
因此在react中尽可能仍是不要进行跨层级的移动。element
二、component diff:若是是相同的组件,则继续比较virtual DOM tree。若是不是,则直接删除整个组件并替换成相同的组件get
三、element diff:有移动,建立和删除操做,这个不用说都直接什么意思。具体的算法细节能够看原文,这里不深究。总结