react如何做性能优化

84 阅读1分钟

如题,主要是要考察下你对 react 的掌握程度,那么这个题回答的好,一定是加分的。

1、减少计算的量

1)列表项使用 key 属性

2)对于Commit在执行hooks时,开发者应保证hooks中的代码尽量轻量,避免耗时阻塞,同时应避免在 CDM、CDU周期 中更新组件

3) 将多个 State 合并为单个 State。例如useState({ list: null, info: null })替代 list 和 info 两个 State。

4)使用 React 官方提供的 unstable_batchedUpdates 方法,将多次 setState 封装到 unstable_batchedUpdates 回调中

2、利用缓存

使用 useMemo 和 useCallback 来生成稳定值,并结合 PureComponent 或 React.memo 避免子组件重新 Render

3、精确重新计算的范围

1)给子组件传props的时候一定只传其需要的而并非一股脑全部传入

2)实现优先级更新,将耗时任务移动到下一个宏任务中执行,优先响应用户行为。

3)避免在 didMount、didUpdate 中更新组件 State

4、其他优化

1)懒加载

Webpack 的动态导入和React.lazy方法

  1. 懒渲染

判断组件是否出现在可视区域内借助react-visibility-observer依赖

3)虚拟列表

react-window 是 react-virtualized 的轻量版本,其 API 和文档更加友好。推荐使用 react-window,只需要计算每项的高度即可