HOW - React Developer Tools 调试器

news2025/5/19 0:45:17

目录

  • React Developer Tools
  • 使用
  • Components 功能特性
    • 1. 查看和编辑 props/state/hooks
    • 2. 查找组件
    • 3. 检查组件树
    • 4. 打印组件信息
    • 5. 检查子组件
  • Profiler 功能特性
    • Commit Chart
    • Flame Chart 火焰图
    • Ranked Chart 排名图
  • why-did-you-render

参考文档:

  • React调试利器:React DevTools
  • How to Use React Dev Tools – With Example Code and Videos

React Developer Tools

当你在开发一个 React 项目时,最简单的调试方式之一就是使用 React 开发者工具,React Developer Tools。

React Dev Tools 是由 React 团队开发的一款浏览器扩展,它允许开发者在浏览器的开发者工具中调试他们的代码。

使用

安装该扩展后,你会在开发者工具中看到两个新的标签页,分别是 Components(组件)和 Profiler(性能分析器)。

Components:
请添加图片描述
Profiler:
请添加图片描述

要使用该扩展的全部功能,你需要处于开发模式。这是因为在生产模式下,组件的名称会被替换为字母,这样你就无法对组件进行性能分析。

Components 功能特性

“Components” 标签页允许你在开发者工具中调试代码,并提供多种功能。让我们一一介绍这些功能:

1. 查看和编辑 props/state/hooks

请添加图片描述
可以帮助你查找组件,并在开发者工具中查看它对应的 props 和 state,而无需单独在控制台中打印它们

你可以直接编辑组件的 propsstate:这可以帮助你实时地查看变更效果,而无需重新加载或刷新网页。上面是一个示例视频,展示了它的使用方式。

2. 查找组件

你可以在整个应用中轻松搜索组件,只需在提供的搜索栏中输入组件名称。它会显示所有与关键词匹配的相关组件,之后你可以在匹配结果之间进行导航。

请添加图片描述

3. 检查组件树

在调试时,了解是哪些父组件导致子组件重新渲染是非常重要的。而直接在代码中查找这些信息有时会非常繁琐。React Dev Tools 中的 “rendered by”(渲染来源)部分能让这一过程变得更加简单,它会在一个地方列出所有相关的父组件。

请添加图片描述

4. 打印组件信息

请添加图片描述

如图示右侧,支持 Logging a component’s data in the console.

有些开发者喜欢在控制台中工作,而这个功能允许你只需点击一次,就能将组件的所有数据输出到控制台。它会展示该组件的所有相关信息,比如接收到的 props、使用的 hooks、在 DOM 中的节点位置,以及该组件在你本地系统中的文件路径。

5. 检查子组件

就像检查父组件在代码中并不总是容易一样,检查子组件也有类似的问题。

为了解决这个问题,你可以双击组件名称,这样就可以一次性查看目标组件内部的所有子组件,将以高亮的形式。

请添加图片描述

Profiler 功能特性

这个标签页允许你测试组件的性能,并显示哪些组件需要关注以进行优化。

要检查网页的性能,你只需按照以下步骤操作:

  1. 点击记录按钮。
  2. 使用你的网页,让性能分析器能够分析组件的渲染情况。
  3. 再次点击记录按钮以结束录制。
  4. 出现如下结果

在这里插入图片描述
如上所示,截图中标记了几个部分。让我们一一介绍它们:

  • A 是记录按钮,它可以帮助你录制性能分析会话。
  • B 是刷新按钮,它可以帮助你刷新页面以重新开始会话。
  • C 是清除按钮,它可以帮助你清除性能分析会话的结果。
  • D 是 Commit Chart,它会显示会话期间的 commits list。
  • E 是组件列表,它会显示在会话期间渲染的组件。
  • F 是 Flame Chart 火焰图按钮,它会像 E 一样显示组件列表。
  • G 是 Ranked Chart 排名图按钮,它会按排名方式显示组件列表。如下图
    请添加图片描述

现在让我们深入了解这个标签页中的不同功能,以及如何检查网页的性能。

Commit Chart

commit chart 显示了会话期间的提交列表。如上图所示,在 D 部分,有 33 根条形图。这些条形图代表会话中的 33 次提交。每次提交都会显示一个副作用,导致 DOM 更新

你可以在这些条形图之间切换,分别查看每个提交的详情。

Flame Chart 火焰图

火焰图显示了在一次提交中渲染的组件列表。如上面图示,当你点击标记为 F 的部分时,E 部分中的所有横向条形图代表第一次提交中的不同组件。

火焰图可以分析哪些组件花费了更多的时间来渲染。请注意,火焰图还会显示:

  1. 组件渲染的确切时间。
  2. 组件在性能分析会话中渲染所花费的时间。

例如,在下图中,SpaceCard 组件在 1.5 秒时渲染,并且渲染时间为 6.1 毫秒。

请添加图片描述

Ranked Chart 排名图

当你点击 G 部分所示的排名图标时,你将看到一个组件的图表视图。这个视图是按降序排列的,也就是说,花费最多时间渲染的组件会位于顶部,而花费最少时间渲染的组件会位于底部。

注意:你可以通过在 “Profiler” 标签页的设置中启用 “Record why each component rendered while profiling” 复选框来获取更多关于为何组件渲染的信息。以下是附带的参考图片:
请添加图片描述

React Dev Tools 是一个非常棒的扩展,适用于你在开发 React 应用时使用。它们可以帮助你轻松调试代码,并找出应用中的性能瓶颈。

why-did-you-render

有时,组件会重新渲染,但无法立即查明原因。虽然 React DevTools 很有用,但在大型应用中,它可能只会提供模糊的解释,例如“hook #1 已渲染”,这可能是无用的。

在这种情况下,你可以求助于 why-did-you-render 库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2332802.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32F103C8T6单片机开发:简单说说单片机的外部GPIO中断(标准库)

目录 前言 如何使用STM32F1系列的标准库完成外部中断的抽象 初始化我们的GPIO为输入的一个模式 初识GPIO复用,开启GPIO的复用功能时钟 GPIO_EXTILineConfig和EXTI_Init配置外部中断参数 插入一个小知识——如何正确的配置结构体? 初始化中断&#…

docker的安装使用0废话版本自学软硬件工程师778天

见字如面, 这里是AIGC创意人_竹相左边 上一篇 因为 自己开发客户系统,为了解决一键启动 前端后端,涉及到了docker-compose 在新的电脑上安装docker 有各种问题这里再次记录下,既是笔记也是分享。 我先用自己的话说一遍&#xff0…

探秘 Svelte+Vite+TS+Melt - UI 框架搭建,开启高效开发

框架太“重”了:通常一个小型项目只由少数几个简单页面构成,如果使用 Vue 或者 React 这些框架来研发的话,有点“大材小用”了。构建的产物中包含了不少框架运行时代码(虚拟 DOM、响应式、状态管理等),这些代码对于小型项目而言是…

vscode 连不上 Ubuntu 18 server 的解决方案

下载 vscode 历史版本 18.5(windows请装在 系统盘 C 盘) 打开 vdcode,将 自动更新 设置为 None (很关键,否则容易前功尽弃) 重命名(删除) 服务器上的 .vscode-server 文件夹 重新…

云原生运维在 2025 年的发展蓝图

随着云计算技术的不断发展和普及,云原生已经成为了现代应用开发和运维的主流趋势。云原生运维是指在云原生环境下,对应用进行部署、监控、管理和优化的过程。在 2025 年,云原生运维将迎来更加广阔的发展前景,同时也将面临着一系列…

Redis进阶--哨兵

目录 一、引言 二、介绍 三、哨兵的核心功能 四、使用docker进行单个主机redis主从复制哨兵操作 五、哨兵重新选取主节点的流程 1.主观下线 2.客观下线 3.主节点挂了 4.挑选新主节点 六、总结 一、引言 如果主从复制中,主节点挂了,从节点会迷茫…

Franka 机器人x Dexterity Gen引领遥操作精细任务新时代

教授机器人工具灵活操作难题 在教授机器人灵活使用工具方面,目前主要有两种策略:一是人类遥控(用于模仿学习),二是模拟到现实的强化学习。然而,这两种方法均存在明显的局限性。 1、人类遥控(用…

专题|MATLAB-R语言Logistic逻辑回归增长模型在互联网金融共生及移动通信客户流失分析实例合集

全文链接:https://tecdat.cn/?p41343 作为数据科学家,我们始终关注如何通过模型创新揭示复杂系统的动态规律。本专题合集聚焦两大核心应用场景,通过 Logistic 增长模型与逻辑回归技术,为互联网金融共生演化与移动通信客户流失预警…

【学生管理系统升级版】

学生管理系统升级版 需求分析:注册功能:登录功能:验证码规则:忘记密码: 实操:系统主页面注册功能登录功能忘记密码效果演示 需求 为学生管理系统书写一个登陆、注册、忘记密码的功能。     只有用户登录成功之后&…

Web3 的云基础设施正在成型,Polkadot 2.0 用三项技术改写“上链成本”

在Web3基础设施内卷加剧的今天,“如何以更低成本、更大灵活性部署一条高性能应用链”正成为开发者们最关心的问题。而刚刚走出“技术慢热”误区的Polkadot,正在用一套名为 Polkadot 2.0 的架构升级方案,重新定义这一问题的解法。 这套升级最…

机器学习——ROC曲线、PR曲线

一、ROC曲线简介 1.1 ROC曲线的构成 1.横轴(假正率,FPR): 表示负样本被错误分类为正的比例(越小越好) 2.纵轴(真正率,TPR,即召回率): 表示正样…

我为女儿开发了一个游戏网站

大家好,我是星河。 自从协助妻子为女儿开发了算数射击游戏后,星河就一直有个想法:为女儿打造一个专属的学习游戏网站。之前的射击游戏虽然有趣,但缺乏难度分级,无法根据女儿的学习进度灵活调整。而且,仅仅…

【Spring Cloud Netflix】GateWay服务网关

1.基本概述 GateWay用于在微服务架构中提供统一的入口点,对请求进行路由,过滤和处理。它就像是整个微服务系统的大门,所有外部请求都要通过它才能访问到后端的各个微服务。 2.核心概念 2.1路由(Route) 路由是Spring Cloud gateWay中最基本…

Docker部署Jenkins服务

文章目录 1.下载Jenkins服务2.部署Java21(可选)2.1 安装Java21 3.Maven3.9.9安装4.启动Jenkins5.初始化Jenkins5.1 入门5.2 安装推荐的插件5.3 创建第一个管理员用户5.4 实例配置5.5 Jenkins已就绪5.6 开始使用Jenkins5.7 重启Jenkins 6.配置Jenkins6.1 …

[ctfshow web入门] web40

信息收集 怎么一下子多这么多过滤啊,我以为跳过了好几题 这又能eval了,但是连$也不能用了 不能用. * ?,所以打不出fla*或者fla?????了 不能用/,构造不出日志注入和伪协议包含 仔细观察,禁的是中文的括号&#x…

蓝桥杯c ++笔记(含算法 贪心+动态规划+dp+进制转化+便利等)

蓝桥杯 #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; //常使用的头文件动态规划 小蓝在黑板上连续写下从 11 到 20232023 之间所有的整数&#xff0c;得到了一个数字序列&#xff1a; S12345…

Qt问题之 告别软件因系统默认中文输入法导致错误退出的烦恼

1. 问题 使用Qt进行研发时&#xff0c;遇到一个问题&#xff0c;当在系统默认输入法中文&#xff08;英文输入法或者搜狗就不会触发闪退&#xff09;的情况下&#xff0c;选中QTableWidget控件&#xff08;QTableWidgetItem有焦点&#xff0c;但是不双击&#xff09;&#xff…

AlDente Pro for Mac电脑 充电限制保护工具

AlDente Pro for Mac电脑 充电限制保护工具 一、介绍 AlDente Pro for Mac&#xff0c;是一款充电限制保护工具&#xff0c;是可以限制最大充电百分比来保护电池的工具。锂离子和聚合物电池&#xff08;如 MacBook 中的电池&#xff09;在40&#xff05; 至 80&#xff05; 之…

算法训练之动态规划(一)

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

Navicat连接远程PostGreSQL失败

问题描述 使用本地Navicat连接Windows远程服务器上部署的PostGreSQL数据库时,出现以下错误: 解决方案 出现以上报错信息,是因为PostGreSQL数据库服务尚未设置允许客户端建立远程连接。可做如下配置, 1. 找到PostGreSQL数据库安装目录下的data子文件夹,重点关注:postgres…