当数据发生变化的时候就会被比对,那什么时候数据会发生改变呢?要么改变了state,要么改变了props(props的改变其实是他的父组件的state发生了改变)。
首先对根元素进行对比,如果根元素发生改变,就直接对根元素进行替换,如果根元素没有发生改变,在对下一层元素进行对比。如果对比发现元素发生删除,就执行删除,发现元素被替换就执行替换,发现添加了新的元素就执行添加,
对比的同时,会通过key值来判断元素是否发生改变,判断元素是仅仅位置发生改变还是需要整个替换或删除
如果不是元素发生改变的话,再对内容进行对比,如果是内容发生改变的话,就直接修改内容,其实就是进行逐层对比,再通过不同的对比来判断执行不同的操作。