面试官说说React性能优化的手段有哪些

作者:灰灰来源:JS每日一题

一、是什么

React凭借virtualDOM和diff算法拥有高效的性能,但是某些情况下,性能明显可以进一步提高

在前面文章中,我们了解到类组件通过调用setState方法,就会导致render,父组件一旦发生render渲染,子组件一定也会执行render渲染

当我们想要更新一个子组件的时候,如下图绿色部分:

理想状态只调用该路径下的组件render:

但是react的默认做法是调用所有组件的render,再对生成的虚拟DOM进行对比(黄色部分),如不变则不进行更新

从上图可见,黄色部分diff算法对比是明显的性能浪费的情况

二、如何做

在React中如何避免不必要的render中,我们了解到如何避免不必要的render来应付上面的问题,主要手段是通过shouldComponentUpdate、PureComponent、React.memo,这三种形式这里就不再复述

除此之外,常见性能优化常见的手段有如下:

避免使用内联函数

使用ReactFragments避免额外标记

使用Immutable

懒加载组件

事件绑定方式

服务端渲染

避免使用内联函数

如果我们使用内联函数,则每次调用render函数时都会创建一个新的函数实例,如下:

importReactfrom"react";exportdefaultclassInlineFunctionComponentextendsReact.Component{render(){return(divh1Wel


转载请注明:http://www.aierlanlan.com/rzfs/2674.html