React-error-boundary — это инструмент, упрощающий процесс реализации границ ошибок в React. Он предоставляет предварительно созданный компонент ErrorBoundary, который разработчики могут использовать для переноса компонентов в свой код, где могут возникать ошибки. Это позволяет им настраивать поведение своей границы ошибок без необходимости создавать ее с нуля.

Базовый пример границы ошибки

import { ErrorBoundary } from "react-error-boundary";

function fallbackRender({ error, resetErrorBoundary }) {
  // Call resetErrorBoundary() to reset t
  // the error boundary and retry the render.

  return (
    <div role="alert">
      <p>Something went wrong:</p>
      <pre style={{ color: "red" }}>{error.message}</pre>
    </div>
  );
}

<ErrorBoundary
  fallbackRender={fallbackRender}
  onReset={(details) => {
    // Reset the state of your app so the error doesn't happen again
  }}
>
  <ApplicationComponents />
</ErrorBoundary>;

Он также предоставляет порт FallbackComponet.

import { ErrorBoundary } from "react-error-boundary";

function Fallback({ error, resetErrorBoundary }) {
  return (
    <div role="alert">
      <p>Something went wrong:</p>
      <pre style={{ color: "red" }}>{error.message}</pre>
    </div>
  );
}

<ErrorBoundary
  FallbackComponent={Fallback}
  onReset={(details) => {
    // Reset the state of your app so the error doesn't happen again
  }}
>
  <ApplicationComponents />
</ErrorBoundary>;

Использование ошибки Boundary hook

Библиотека react-error-boundary имеет дополнительное преимущество, позволяя разработчикам отлавливать ошибки, которые обычно не обнаруживаются обычными границами ошибок React. С помощью этой библиотеки разработчики могут реализовать границы ошибок для обработки ошибок, которые могут возникнуть во время запросов API, обработчиков событий и других областей их кода, где возможны ошибки.

Чтобы использовать хук useErrorHandler, мы пишем , handleError и передаем в него нашу пользовательскую ошибку.

const MyComponent = () => {
  const handleError = useErrorHandler();

  const handleClick = () => {
    try {
      // some code that may throw an error
    } catch (error) {
      handleError(error);
    }
  };

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

Было бы лучше, если бы вы утомили его различными настройками, которые помогли бы улучшить понимание ErrorBoundary.

Если вы хотите быть в курсе, подписывайтесь, хлопайте, ставьте лайки и делитесь новостями. Здоровья!