当前位置:首页 > React

react如何处理异常

2026-01-07 12:42:52React

错误边界(Error Boundaries)

React 16+ 引入了错误边界的概念,用于捕获子组件树中的 JavaScript 错误,并展示降级 UI。通过定义 static getDerivedStateFromError()componentDidCatch() 的类组件即可成为错误边界。

class ErrorBoundary extends React.Component {
  state = { hasError: false };

  static getDerivedStateFromError(error) {
    return { hasError: true };
  }

  componentDidCatch(error, errorInfo) {
    console.error("Caught error:", error, errorInfo);
  }

  render() {
    if (this.state.hasError) {
      return <h1>Something went wrong.</h1>;
    }
    return this.props.children;
  }
}

try/catch 处理事件和异步代码

错误边界无法捕获事件处理器或异步代码中的异常。这些场景需使用传统的 try/catch 处理。

function MyComponent() {
  const handleClick = () => {
    try {
      // 可能抛出错误的代码
    } catch (error) {
      console.error("Event handler error:", error);
    }
  };

  return <button onClick={handleClick}>Click</button>;
}

全局错误监听

通过 window.addEventListener 监听未捕获的全局错误,适用于非 React 特有的错误处理。

useEffect(() => {
  const handleGlobalError = (error) => {
    console.error("Global error:", error);
  };
  window.addEventListener("error", handleGlobalError);
  return () => window.removeEventListener("error", handleGlobalError);
}, []);

第三方错误监控服务

集成 Sentry、Rollbar 等工具可实时监控生产环境中的错误。通常需在应用入口初始化。

import * as Sentry from "@sentry/react";
Sentry.init({ dsn: "YOUR_DSN" });

function App() {
  return <ErrorBoundary fallback={<p>An error occurred</p>}>...</ErrorBoundary>;
}

开发环境严格模式

React 的 StrictMode 组件会检测潜在问题(如不安全的生命周期方法),帮助在开发阶段暴露异常。

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById("root")
);

react如何处理异常

分享给朋友:

相关文章

react如何处理异步

react如何处理异步

异步处理的核心方法 在React中处理异步操作主要依赖以下几种方式: useEffect钩子 适用于组件挂载、更新或卸载时的副作用操作。结合async/await语法可清晰管理异步流程: useE…

react如何处理组件异常

react如何处理组件异常

错误边界(Error Boundaries) React 16+ 引入了错误边界概念,用于捕获子组件树中的 JavaScript 错误。通过定义 static getDerivedStateFromE…

react中如何处理图片变形

react中如何处理图片变形

处理图片变形的方法 在React中处理图片变形通常涉及控制图片的宽高比、裁剪或缩放。以下是几种常见方法: 使用CSS object-fit属性 通过CSS的object-fit属性可以控制图片如何适…

react销毁组件ref如何处理

react销毁组件ref如何处理

React 组件销毁时 Ref 的处理方法 在 React 中,当组件销毁时,与 ref 相关的资源需要妥善处理以避免内存泄漏或意外行为。以下是几种常见的处理方式: 清理 ref 的当前值 在组件…

react多个点击事件如何处理

react多个点击事件如何处理

处理多个点击事件的常见方法 事件委托(Event Delegation) 在父元素上绑定单一事件处理器,通过event.target判断触发源。适合动态内容或大量子元素场景,减少内存消耗。 <…

react源码如何处理生命周期

react源码如何处理生命周期

React 生命周期处理机制 React 的生命周期处理主要分为三个阶段:挂载(Mounting)、更新(Updating)和卸载(Unmounting)。React 内部通过协调算法(Reconci…