可重用的React 错误边界组件。支持所有React渲染器(包括React DOM和React Native)。
# npm npm install react-error-boundary # pnpm pnpm add react-error-boundary # yarn yarn add react-error-boundary
ErrorBoundary 组件将ErrorBoundary组件包裹在其他React组件周围,以"捕获"错误并渲染一个后备UI。该组件支持多种渲染后备UI的方式(如下所示)。
注意
ErrorBoundary是一个_客户端_组件。你只能向它传递可序列化的props,或在带有"use client";指令的文件 中使用它。
fallbackprop的ErrorBoundary渲染默认"出错了"类型错误消息的最简单方式。
"use client"; import { ErrorBoundary } from "react-error-boundary"; <ErrorBoundary fallback={<div>出错了</div>}> <ExampleApplication /> </ErrorBoundary>
fallbackRenderprop的ErrorBoundary"渲染prop"函数负责根据抛出的值返回一个后备UI。
"use client"; import { ErrorBoundary } from "react-error-boundary"; function fallbackRender({ error, resetErrorBoundary }) { // 调用resetErrorBoundary()重置错误边界并重试渲染。 return ( <div role="alert"> <p>出错了:</p> <pre style={{ color: "red" }}>{error.message}</pre> </div> ); } <ErrorBoundary fallbackRender={fallbackRender} onReset={(details) => { // 重置应用状态,以防止错误再次发生 }} > <ExampleApplication /> </ErrorBoundary>;
FallbackComponentprop的ErrorBoundaryReact组件负责根据抛出的值返回一个后备UI。
"use client"; import { ErrorBoundary } from "react-error-boundary"; function Fallback({ error, resetErrorBoundary }) { // 调用resetErrorBoundary()重置错误边界并重试渲染。 return ( <div role="alert"> <p>出错了:</p> <pre style={{ color: "red" }}>{error.message}</pre> </div> ); } <ErrorBoundary FallbackComponent={Fallback} onReset={(details) => { // 重置应用状态,以防止错误再次发生 }} > <ExampleApplication /> </ErrorBoundary>;
onError记录错误"use client"; import { ErrorBoundary } from "react-error-boundary"; const logError = (error: Error, info: { componentStack: string }) => { // 处理错误,例如记录到外部API }; const ui = ( <ErrorBoundary FallbackComponent={ErrorFallback} onError={logError}> <ExampleApplication /> </ErrorBoundary> );
useErrorBoundary 钩子用于命令式显示或关闭错误边界的便捷钩子。
React只处理渲染过程中或组件生命周期方法(如effects和did-mount/did-update)中抛出的错误。事件处理程序中或异步代码执行后抛出的错误不会被捕获。
这个钩子可以用来将这些错误传递给最近的错误边界:
"use client"; import { useErrorBoundary } from "react-error-boundary"; function Example() { const { showBoundary } = useErrorBoundary(); useEffect(() => { fetchGreeting(name).then( response => { // 在状态中设置数据并重新渲染 }, error => { // 显示错误边界 showBoundary(error); } ); }); // 渲染 ... }
后备组件可以使用这个钩子来请求最近的错误边界重试最初失败的渲染。
"use client"; import { useErrorBoundary } from "react-error-boundary"; function ErrorFallback({ error }) { const { resetBoundary } = useErrorBoundary(); return ( <div role="alert"> <p>出错了:</p> <pre style={{ color: "red" }}>{error.message}</pre> <button onClick={resetBoundary}>重试</button> </div> ); }
withErrorBoundary HOC这个包也可以作为高阶组件使用,接受与上述相同的所有props:
"use client"; import {withErrorBoundary} from 'react-error-boundary' const ComponentWithErrorBoundary = withErrorBoundary(ExampleComponent, { fallback: <div>出错了</div>, onError(error, info) { // 处理错误 // 例如,在这里记录到错误日志客户端 }, }) // 可以渲染为 <ComponentWithErrorBoundary {...props} />
ErrorBoundary无法作为JSX组件使用这个错误可能是由react和@types/react版本不匹配导致的。要修复这个问题,请确保两者完全匹配,例如:
如果使用NPM:
{ ... "overrides": { "@types/react": "17.0.60" }, ... }
如果使用Yarn:
{ ... "resolutions": { "@types/react": "17.0.60" }, ... }


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光