For AI agents: the complete documentation index is available at https://ifhover.github.io/leaf-ui/v/0.6.0/llms.txt, the full documentation bundle is available at https://ifhover.github.io/leaf-ui/v/0.6.0/llms-full.txt, and this page is available as Markdown at https://ifhover.github.io/leaf-ui/v/0.6.0/components/error-boundary.md.
  • 简体中文
  • ErrorBoundary 错误边界

    展示内容异常时的备用界面。

    基本用法

    内容正常显示。

    basic.tsx
    function Content({ broken }: { broken: boolean }) {
      if (broken) throw new Error('Demo rendering error');
      return <p>内容正常显示。</p>;
    }
    
    import { Button, ErrorBoundary, Space } from '@ifhover/leaf-ui';
    
    import { useState } from 'react';
    
    export function ErrorBoundaryBasic() {
      const [broken, setBroken] = useState(false);
      return (
        <Space direction="vertical" align="stretch">
          <Button variant="outline" onClick={() => setBroken(true)}>
            模拟内容异常
          </Button>
          <ErrorBoundary onReset={() => setBroken(false)}>
            <Content broken={broken} />
          </ErrorBoundary>
        </Space>
      );
    }
    

    更多用法

    备用界面只替换出错的区块。
    advanced.tsx
    function Content({ broken }: { broken: boolean }) {
      if (broken) throw new Error('Demo rendering error');
      return <span>备用界面只替换出错的区块。</span>;
    }
    
    import { Alert, Button, ErrorBoundary, Space } from '@ifhover/leaf-ui';
    
    import { useState } from 'react';
    
    export function ErrorBoundaryCustom() {
      const [broken, setBroken] = useState(false);
      return (
        <Space direction="vertical" align="stretch">
          <Button variant="outline" onClick={() => setBroken(true)}>
            测试备用界面
          </Button>
          <ErrorBoundary
            fallback={({ reset }) => (
              <Alert
                title="此区块不可用"
                description={
                  <Button size="sm" variant="ghost" onClick={reset}>
                    再次尝试
                  </Button>
                }
              />
            )}
            onReset={() => setBroken(false)}
            resetKeys={[broken]}
          >
            <Content broken={broken} />
          </ErrorBoundary>
        </Space>
      );
    }
    

    使用说明

    捕获子组件渲染和生命周期错误。事件处理、异步请求与服务端渲染错误由操作或框架处理。通过 onError 上报异常,避免在用户界面显示内部堆栈。

    类型

    组装数据、定义回调和使用 ref 时,可以导入这些类型。

    import type { ErrorBoundaryFallbackProps, ErrorBoundaryProps } from '@ifhover/leaf-ui';

    ErrorBoundaryFallbackProps API

    属性类型默认值说明
    errorError必填错误对象或错误通知
    reset() => void必填重置状态或重试

    ErrorBoundaryProps API

    属性类型默认值说明
    childrenReactNode—内容或下级项目
    fallbackReactNode | ((props: ErrorBoundaryFallbackProps) => ReactNode)—加载失败时的内容
    resetKeysreadonly unknown[]—值变化时重置错误
    onError(error: Error, info: ErrorInfo) => void—异常回调
    onReset() => void—重置回调