由于在reactelement中有一个属性是key,该属性默认是为空值,因此通常状况下,只要组件不加上key值,react是不会去校验组件的key,而是直接采用diff算法进行对比,一旦组件加上了key值,react就会在渲染时对该组件的身份进行校验,首先校验新旧组件的key值是否是一致,不一致的话,该组件直接销毁,而后在新建该组件;若是一致,则比较组件的属性是否发生变化,若是发生变化,则采用diff算法进行对比,而后得出差别对象,若是属性没发生变化,则认为该组件不须要改变;react
大概的流程图:算法