当前位置: 首页 > news >正文

调试技巧 — 浏览器开发者工具实战

1. React DevTools — Components 面板

作用:以树形结构展示 React 组件层级,选中任意组件可查看其 props、state(hooks)和 context 的当前值(渲染完成后的最新值)。

安装:Chrome Web Store 搜索 "React Developer Tools" 安装,开发环境(localhost)自动激活。

常用操作

场景操作步骤
确认 state 是否切换成功Components → 搜索组件名 → Hooks 区域找到对应 State
确认 prop 是否正确传递选中子组件 → Props 查看值是否与父组件 state 一致
确认 store 订阅值选中使用useCreateStore的组件 → Hooks 区域

核心技巧对比父子组件值是定位useMemo依赖遗漏的最有效方法。父组件 state 变了但子组件 prop 没变 → 中间有缓存没更新。

2. React DevTools — Profiler 面板

作用:录制一段操作期间所有组件的渲染情况 — 哪些渲染了、为什么渲染、渲染耗时。未渲染的组件灰显并标注 "Did not render"。

常用操作

场景操作步骤
检查状态切换后哪些组件渲染了Profiler → 🔴 录制 → 操作 → 停止 → 火焰图
验证 useMemo 修复是否生效修复前子组件灰显(未渲染)→ 修复后高亮(重新渲染了)
排查不必要的重渲染点组件 → "Why did this render?"

技巧:设置中勾选 "Record why each component rendered" 可以看到渲染原因(props changed / hooks changed / parent rendered)。

3. Sources 面板打断点

作用:在源码中设置断点,代码执行到该处暂停,查看当前作用域所有变量的值。Vite 开发服务器启用了 sourcemap,可以直接在.tsx源码上打断点。

打断点的三种方式

方式操作适用场景
手动断点Ctrl+P→ 输入文件名 → 点击行号普通调试
条件断点右键行号 → "Add conditional breakpoint" → 输入条件只在特定条件暂停(如mode === 'pro_plus'
Logpoint右键行号 → "Add logpoint" → 输入表达式不暂停,只在 Console 输出日志(不需要改代码)

快捷键

快捷键作用
F10Step Over — 逐行执行
F11Step Into — 进入函数内部
Shift+F11Step Out — 跳出当前函数

重要注意:ReactuseStatesetter 是异步的,在setMode(xxx)处打断点时 Scope 中mode仍是旧值,这是正常的(参见踩坑 ③)。应在消费 state 的地方打断点。

4. Console 临时日志

用法

console.log('[DEBUG] mode:', mode, 'isProPlus:', isProPlus); console.table(taskTypes); // 数组/对象列表更易读 console.trace(); // 打印调用栈

技巧

  • 用统一前缀[DEBUG]方便在 Console Filter 框过滤

  • Vite HMR 保存后几百毫秒生效,不需要刷新页面

  • 验证完毕后务必删除,不要提交到仓库

更好的替代:Logpoint(Sources 面板右键行号 → "Add logpoint")效果等同console.log但不修改源码,页面刷新后自动清除。

5. Network 面板验证 API 请求

作用:查看请求参数和响应数据,验证前端传给后端的值以及后端返回的字段。

场景操作
确认筛选传参过滤task/list→ Payload 查看taskTypes
确认素材字段过滤material/list→ Response 查看motionPrecisionType
重新发送请求右键请求 → "Copy as fetch" → Console 粘贴执行

技巧:勾选 "Preserve log" 防止页面跳转时请求记录被清除。

6. Elements 面板观察 DOM

作用:检查当前 DOM 结构和样式,通过 DOM 特征间接判断 React state 的渲染结果。

场景方法
模式是否激活检查对应元素是否有activeclass / 高亮背景色
标签是否渲染Ctrl+F搜索 "Pro+" 文本
DOM 变化断点右键元素 → "Break on" → "subtree modifications"

7. ESLint 静态检查

作用:编译期检测useMemo/useCallback/useEffect依赖数组遗漏。

# 检查单个文件 npx eslint src/components/Editor/MotionImitation/MotionImitation.tsx ​ # 检查整个目录 npx eslint src/components/Editor/MotionImitation/

项目已配置react-hooks/exhaustive-deps规则(warning 级别),修复依赖遗漏 bug 后立即跑 ESLint 验证。

调试方法选择指南

目的推荐工具原因
快速查看当前 state/propsReact DevTools Components无需改代码,实时显示
验证组件是否重新渲染React DevTools Profiler可视化渲染情况
精确验证某行变量值Sources 断点暂停执行,逐步检查
快速打日志不改代码Sources Logpoint等同 console.log 但不修改源码
验证 API 请求参数和响应Network 面板直接看网络通信
通过 DOM 间接判断渲染Elements 面板验证 class、文本等
编译期发现依赖遗漏ESLint预防性检查
http://www.jsqmd.com/news/779522/

相关文章:

  • 为什么你背了这么多年单词,英语还是没进步?
  • 比亚迪旗舰电动SUV“大唐“首日预订破3万,起售价不足40万元
  • AI自动化漏洞挖掘:Worm-GPT技术原理与安全攻防新范式
  • 基于MCP协议与SQLite为AI应用构建持久化记忆层
  • 【LSF集群搭建】2-共享文件系统
  • AI编程助手MCP服务器配置指南:从原理到实战部署
  • 魔兽争霸3终极优化指南:5分钟让你的经典游戏在Win10/Win11上完美运行
  • 从Built-in到URP迁移避坑:手把手教你将场景扫描后处理特效无损升级(Unity 2022 LTS)
  • 三分钟搞定网易云音乐NCM文件解密:Windows图形界面终极指南
  • AI合同审查技能:基于CUAD数据集与立场感知的智能法律助手
  • Harmony6.0 社团活动页面实战:构建高质感校园招募与活动排期界面
  • Cascadia-OS:基于微内核与能力安全模型的现代操作系统设计探索
  • 从零构建8位CPU:用Logisim仿真理解计算机底层原理
  • 2026国内新媒体推广公司靠谱吗?实测5家主流服务商,真实实力排名一目了然 - GEO优化
  • 调整工作集窗口缓解抖动
  • 基于微信小程序班级管理交流APP的设计与开发
  • 光纤传输技术在视频工程中的应用与选型指南
  • Acad Radiol(IF=3.9)首都医科大学宣武医院卢洁教授团队:基于MRI的Delta放射组学预测乳腺癌患者新辅助化疗后腋窝淋巴结病理完全缓解
  • 数据类型案例
  • 2026年国内品牌推广公司靠谱吗?实测5家主流服务商,真实实力排名一目了然 - GEO优化
  • 命令行AI助手chatgpt-cli:集成多模型与Agent模式,提升开发效率
  • 2026届学术党必备的五大AI论文平台横评
  • Godot游戏集成AdMob广告插件:从原理到实战的完整指南
  • Flutter × Harmony6.0 社团活动管理页面实战:从组件设计到鸿蒙风格 UI 构建
  • 从图库管理到 RAW 精修 ACDSee 2025 专业版下载安装教程
  • 分类1_java
  • AWS资源管理利器:aws-manager命令行工具的设计理念与实战应用
  • 如何将CT-MPI影像组学特征与冠心病大血管及微循环机制建立关联,并进一步解释其与主要不良心血管事件(MACE)预后的机制联系
  • 搜维尔科技:Tesollo与大成高科技携手合作,确保机器人手批量生产的质量
  • 20260507am8有题目