React性能优化的手段有哪些?

一、是什么

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

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

当我们想要更新一个子组件的时候,如下图绿色部分:
在这里插入图片描述
理想状态只调用该路径下的组件render:
在这里插入图片描述
但是react的默认做法是调用所有组件的render,再对生成的虚拟DOM进行对比(黄色部分),如不变则不进行更新
在这里插入图片描述
从上图可见,黄色部分diff算法对比是明显的性能浪费的情况

二、性能优化常见的手段

  1. 使用纯组件
  2. 使用 React.memo 进行组件记忆(React.memo 是一个高阶组件),对于相同的输入,不重复执行;
  3. 如果是类组件,使用 shouldComponentUpdate(这是在重新渲染组件之前触发的其中一个生命周期事件)生命周期事件,可以利用此事件来决定何时需要重新渲染组件;
  4. 路由懒加载;
  5. 使用 React Fragments 避免额外标记;
  6. 不要使用内联函数定义(如果我们使用内联函数,则每次调用“render”函数时都会创建一个新的函数实例);
  7. 避免在Willxxx系列的生命周期中进行异步请求,操作dom等;
  8. 如果是类组件,事件函数在Constructor中绑定bind改变this指向;
  9. 避免使用内联样式属性;
  10. 优化 React 中的条件渲染;
  11. 不要在 render 方法中导出数据;
  12. 列表渲染的时候加key;
  13. 在函数组件中使用useCallback和useMemo来进行组件优化,依赖没有变化的话,不重复执行;
  14. 类组件中使用immutable对象;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚时之秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值