原文:https://zhuanlan.zhihu.com/p/20346379react
總結一下我的看完以後的理解:算法
一、tree diff:只對相同層級的節點進行比較,若是子樹在新樹種不存在了,則直接刪除。若是新加了樹就是建立,那麼若是進行了跨層級的樹的移動怎麼辦?答案是直接刪除移動前的樹,在移動後的位置建立一顆如出一轍的。component
因此在react中儘可能仍是不要進行跨層級的移動。element
二、component diff:若是是相同的組件,則繼續比較virtual DOM tree。若是不是,則直接刪除整個組件並替換成相同的組件get
三、element diff:有移動,建立和刪除操做,這個不用說都直接什麼意思。具體的算法細節能夠看原文,這裏不深究。總結