千家信息网

有哪些React性能优化工具

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"有哪些React性能优化工具",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"有哪些React性能优化工具"吧!ProfilerCod
千家信息网最后更新 2026年11月02日有哪些React性能优化工具

这篇文章主要讲解了"有哪些React性能优化工具",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"有哪些React性能优化工具"吧!

Profiler

Code SandBox

可以前往

https://codesandbox.io/s/react-profiler-example-o75nc?fontsize=14&hidenavigation=1&theme=dark 在线编辑效果。

Profiler 是 React 中的一个组件,由 B. Vaughn 开发,它可以测量 React 应用渲染的频率和渲染所花费的时间资源。Profiler 提供一个函数属性 onRender,当组件 mount 或者 update 的时候,这个函数会接受到一些时间指标。用这些时间指标你就可以发现效率低下的代码了。

import React, { Profiler } from 'react';  ...     

id 用来标识对应的 Profiler 组件,onRender 函数会在组件 mount 或者 update 的时候执行,它的参数结构如下:

function onRenderCallback(  id,   phase,   actualDuration,    baseDuration,   startTime,   commitTime,) {   console.log('onRenderCallback', {     id,     phase,     actualDuration,      baseDuration,     startTime,     commitTime,   }) }
  • id 组件 id;

  • phase 执行阶段,mount 或者 update;

  • actualDuration Profiler 和子组件渲染当前的更新所花费的时间,这个值在首次 mount 的时候比 update 阶段的值大;

  • baseDuration 子组件最近一次渲染所持续的时长

  • startTime 开始渲染当前的更新的时间戳

  • commitTime React 提交当前更新的时间戳

这些数据可以帮助我们分析组件运行的效率,找到性能瓶颈。

React Developer tools

React Developer tools 是 React 官方团队发布的一个浏览器插件,功能十分强大。我要介绍的是 Highlight Update 这个功能。这个工具用来检测组件重复渲染非常有效。他可以用不同的颜色来标识组件的边框,颜色越黄表示这个组件重复渲染的次数越多。

如果你有一个组件树像下面这样:

如果 Main 组件重复渲染了,那么封装 Counter 和 Count 组件的边界就会出现一个边框表示重复渲染。

我们激活这个特性之后,在 ReactJS 官网开启关闭右侧的菜单,会出现边框提示:

如何激活这个特性呢?找到调试工具的 Components 一栏,点击右上角的小齿轮,再选中弹窗中的 Highlight updates when components render.

边框的类型取决于重复渲染的程度,重复渲染越多,颜色越深。

|    绿色 - 低频次更新 |    蓝色 - 一般频次更新 v    红色 - 高频次更新

通过使用这个工具,我们可以通过边框颜色来轻易找到有性能问题的组件,并对它做针对性的优化。

why-did-you-render

https://github.com/welldone-software/why-did-you-render,这个工具是由 Welldone Software 开发的,用来对组件重复渲染给出反馈。

它会对组件的 props 做 diff,如果组件重新渲染了,但是 props 并没改变,它会在命令行提醒你 props 并没有变化。

重复渲染在小型应用中影响可能不大,但是在大型项目中将肯定会有影响。

这个工具嵌入到了 React 组件的生命周期中,所以他能在组件重新渲染时比对 props 是否变化。

使用方法很简单,先安装

npm install @welldone-software/why-did-you-render --save

然后注册一次:

whyDidYouRender(React, {   trackAllPureComponents: true });

然后对 class component:

class Counter extends React.Component {   static whyDidYouRender = true;   render() {    //...   } }

对函数组件:

function Counter() {   return(    // ...   ) } Counter.whyDidYouRender = true;

下面是一个完整的例子,每次 setState 时候,style={{ width: "100%" }} 都是一个新的值,所以会触发比对。

import React from "react"; import "./styles.css"; const whyDidYouRender = require("@welldone-software/why-did-you-render"); whyDidYouRender(React, {   trackAllPureComponents: true }); export default class App extends React.Component {   constructor() {     super();     this.state = {       count: 1     };   }   render() {     return (       

{this.state.count}

); } } function Comp(props) { return
100
; } Comp.whyDidYouRender = true;

前往 Code SandBox 测试

https://codesandbox.io/s/distracted-architecture-t9ih3?file=/src/App.js。

Performance timeline (Browser profiling)

这个工具是 Chrome 自带的调试工具,在 Performance 一栏中。

它可以非常有效地查看严重重复渲染的组件,它也可以很方便地查看 UI 不必要的更新及其出现的频次。

在使用工具之前,先以开发模式把你的 React app 启动起来。

然后,打开开发者工具,切换到 Performance 面板。

点击中间的圆点或者用快捷键 command + e,开发者工具就开始录制了,然后你可以在你的应用中做一些交互动作。

建议录制时间在 20 秒以上,时间到了之后,点击中间的 stop,或者左上角红点。

然后我们就可以看到时间线了。

我们可以滑动选择一片区域,然后通过 W 放大或者通过 S 缩小。选中一片区域,通过 W 键一直放大。

每个橙色的条代表一个执行过程,在这个条中你可以看到组件名、组件执行的阶段、以及执行时间。在上面这张图片中,App 的执行阶段是 update 阶段,这表示 App 组件这段时间是在执行更新操作,执行所耗费的时间是 1.71 ms。

组件每次渲染的时候一个新的黄条就会生成,如果一个组件多次渲染,通过这个 Timings 图表可以让你更容易追因。每个黄条的长度表示组件的执行时间,黄条越长,执行时间也越长。你可以使用这个工具来诊断页面。

感谢各位的阅读,以上就是"有哪些React性能优化工具"的内容了,经过本文的学习后,相信大家对有哪些React性能优化工具这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

组件 工具 时间 更新 性能 时候 边框 阶段 函数 颜色 开发 学习 应用 有效 内容 功能 区域 开发者 指标 效率 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技股 与互联网科技公司 平安科技 互联网 致骋互联网科技 奇酷互联网络科技 互联网科技视频 致聘互联网科技 亿账通互联网科技 互联网 科技服务平台 互联网科技创新企业排名 互联网科技公司需要的职位 中化能源互联网科技招聘 湖北码尼互联网科技有限公司电话 翼展科技 首家互联网医院 保险科技服务互联网营销体系 互联网金融科技元年 上海乐五互联网科技有限公司 陕西九四连强互联网科技有限公司 盐城市攀科互联网科技有限公司 安徽九吞吴互联网科技有限公司 长亮科技互联网金融 互联网科技类展会 中国科技互联网公司收入 互联网科技实习生岗位职责 广州恒生互联网科技有限 成都铂石互联网科技做什么的 互联网科技的全部知识 科技互联网的核心竞争力 九思连强互联网电子科技有限公司 广州梦谷互联网科技有限公司领导
0