虚拟dom
虚拟dom就相当于在js和真实dom之间加了一个缓存,react在开发时所有的dom操作都是通过虚拟dom进行的,每当数据发生变化,React都会重新构建整个dom树,通过diff算法对当前dom树和之前dom树进行比对,得到两者的变化部分,仅对变化的部分进行更新,从而提高性能
diff算法
diff算法就是用于比较新旧两个虚拟dom差异的一种算法,通过比较得出新旧dom变化的部分,只针对该部分进行原生dom操作,而不会使整个页面进行重绘。
diff算法会先把dom树按照层级进行分解,比较同一层级的元素
如果发现新旧节点类型不同,则会插入新的节点,删除旧的节点
如果新旧节点类型相同,则会重新设置该属性
如果是列表节点的比较,需要给他的每个单元添加唯一的key才能进行高效的比较