mcpField
R
react-error-handling

react-error-handling

github.com/oakoss开发20126 次安装10 周前更新
代码仓库

关于 react-error-handling

面向 React 开发者的错误边界与恢复实践指南,涵盖回退界面、重置方式和错误记录,并说明错误边界无法捕获的错误类型。

主要功能

  1. 01类组件与函数组件错误边界
  2. 02回退界面模式
  3. 03手动与自动重置
  4. 04错误记录指导
  5. 05嵌套边界布局
  6. 06Suspense 错误处理

适用场景

  1. 01隔离功能区域中的崩溃
  2. 02渲染错误后提供重试
  3. 03记录组件错误以供监控

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/oakoss/agent-skills --skill react-error-handling

安装后在 Claude Code 中输入/react-error-handling确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
boundary-placement.md
class-boundaries.md
fallback-patterns.md
react-error-boundary.md
reset-recovery.md

详细介绍

React 错误处理

概述

错误边界可以捕获渲染期间、生命周期方法中以及子组件构造函数中的 JavaScript 错误。它们会显示备用 UI,而不是让整个组件树崩溃。在原生 React 中,错误边界只能通过类组件实现,但 react-error-boundary 库提供了便捷的函数组件包装器。

适用场景: 组件崩溃、防止错误向上传播至父路由、优雅降级、面向用户的错误状态、错误日志记录与监控。

不适用场景: 事件处理程序中的错误(使用 try/catch)、渲染之外的异步回调(setTimeout、未使用 Suspense 的 Promise)、服务端渲染错误、错误边界自身发生的错误。

快速参考

模式API要点
类边界getDerivedStateFromError + componentDidCatch手动实现,完全掌控
函数边界<ErrorBoundary FallbackComponent={...} />使用 react-error-boundary 库
重置机制resetErrorBoundary() 或 resetKeys={[dep]}状态变化时自动重置,或手动重试
错误日志记录onError={(error, info) => log(error)}记录到分析或监控服务
备用组件FallbackComponent={MyFallback}接收错误和 resetErrorBoundary
内联备用 UIfallback={<div>Error occurred</div>}静态 JSX,不包含错误详情
渲染属性备用 UIfallbackRender={({ error, reset }) => <UI />}可访问错误的动态备用 UI
嵌套边界在组件树的多个层级进行包装精细隔离错误
路由级边界TanStack Router errorComponent委托给 tanstack-router 技能
Suspense 集成包装 Suspense 边界以处理异步错误捕获 Suspense 抛出的错误
事件处理程序错误在处理程序中使用 try/catch,而不是错误边界边界不会捕获事件错误
useErrorBoundary hookconst { showBoundary, resetBoundary } = useErrorBoundary从子组件手动触发边界

常见错误

错误正确做法
用错误边界处理事件在事件处理程序中使用 try/catch
包装每一个组件在有意义的 UI 区域放置边界
未提供重置机制添加重试按钮或设置 resetKeys
在生产环境显示堆栈跟踪仅在开发模式下渲染堆栈跟踪
未设置 onError 进行日志记录始终将错误记录到监控服务
在边界自身中捕获错误错误边界只能捕获子组件错误
在 getDerived 中使用异步代码getDerivedStateFromError 必须是纯函数,应使用 didCatch
依赖 componentDidCatch使用 getDerivedStateFromError 更新状态
未测试错误边界使用会抛出错误的组件进行测试
忽略 resetKeys 模式使用 resetKeys 在状态变化时自动恢复
阻止 Suspense 备用 UISuspense 周围的错误边界应允许显示备用 UI

委派

如果有 tanstack-router 技能,请将路由级错误处理(errorComponent、notFoundComponent、加载器错误)委派给它。否则,建议:npx skills add oakoss/agent-skills --skill tanstack-router

  • 错误监控设置:委派给集成/可观测性专家
  • 复杂恢复流程:使用 Task Agent 处理多步骤错误恢复模式
  • 错误边界测试:委派测试专家编写测试

参考资料

评论

支持 Markdown