ErrorBoundary

곰튀김·2022년 5월 18일
0

react 에서 에러를 처리하기 위해서 ErrorBoundary를 사용하면 된단다.

그런데

에러 경계는 다음과 같은 에러는 포착하지 않습니다.

이벤트 핸들러 (더 알아보기)
비동기적 코드 (예: setTimeout 혹은 requestAnimationFrame 콜백)
서버 사이드 렌더링
자식에서가 아닌 에러 경계 자체에서 발생하는 에러

이 내용을 꼼꼼히 보지 않아서 원하는 대로 fallback 페이지를 보여주지 못하는 문제가 있었다.

그래서 결국 window에서 발생하는 모든 에러를 잡아서 fallback화면을 보여주면 되지 않을까 생각해서..
이렇게 만들었다.

const ErrorBoundary: React.FC = ({ children }) => {
  const [error, setError] = React.useState<Error | null>(null);

  React.useEffect(() => {
    const onError = (e: ErrorEvent) => {
      setError(e.error);
    };

    window.addEventListener('error', onError);
    return () => window.removeEventListener('error', onError);
  }, []);

  if (error) return <FallbackPage error={error} />;
  return <>{children}</>;
};

export default ErrorBoundary;
profile
사실주의 프로그래머

0개의 댓글