为什么react这么快呢 ?
因为react用了虚拟DOM;
但是每次虚拟DOM转真实DOM不也是很浪费性能吗 ?
nice,所以关键点在Diff算法这里,去对比新旧DOM树,而后通过补丁去更新到真实DOM上;
这个比对不是也很浪费时间吗 ?
正常情况下,比较两个树形结构差异的算法的时间复杂度是O(N^3),这个效率显然是无法接受的。
react通过总结DOM的实际使用场景提出了两个在绝大多数实践场景下都成立的假设,基于这两个假设,React实现了在O(N)时间复杂度内完成两棵虚拟DOM树的比较。
两个假设是:
(1)如果两个元素的类型不同,那么它们将生成两棵不同的树;
(2)为列表中的元素设置key属性,用key标识对应的元素在多次;
面对性能优化我们能做什么呢 ?
1、使用生产环境版本的库;
2、避免不必要的组件渲染;
3、使用key;