[React] Error 다루기

2022. 10. 21. 16:27·🍞 FrontEnd/React

JavaScript의 try catch문처럼 에러로 React가 컴포넌트를 그릴 수 없는 상황을 만들어줄 것이다.

먼저, 아래의 사진처럼 Child 컴포넌트에 throw new Error로 에러를 생성해줬다.

 

ErrorBonudary 

자식 안에서 에러가 났으면 Catch Error 해서특정한 화면을 보여주겠다는 영역이다.

아까와 같이 콘솔 창에서는 똑같은 에러가 뜨지만, 화면상에서는 특정 화면을 보여주는 것을 볼 수 있다.

이것을 함수형 컴포넌트로 만들 수 없는 이유는 에러가 났을 때 상태 값을 어떻게 처리하는 함수 자체(getDerivedStateFromError)를 클래스 컴포넌트에서만 제공을 하기 때문이다.

 

여기서 Fallback이라는 것은 Error가 났을 때 보여줄 컴포넌트를 의미한다.

  <script type="text/babel">
    const root = document.querySelector("#root");

    class ErrorBoundary extends React.Component {
      state = {
        error: null
      }
      static getDerivedStateFromError(error) {
        return {error};
      }
      render() {
        const {error} = this.state;
        if(error) {
          return <this.props.fallback error={error} />
        } else{
          return this.props.children;
        }
      }
    }

    const Child = () => {
      throw new Error("Something Wrong...");
      return <p>Child...</p>;
    }

    const Fallback = ({error}) => {
      alert(error.message)
      return <p>{error.message}</p>
    }

    const App = () => {
      return (
        <> 
          <p>App...</p>
          <ErrorBoundary fallback={Fallback}>
            <Child />
          </ErrorBoundary>
        </>
      )
    }

    ReactDOM.render(<App />, root)
  </script>

 

저작자표시 (새창열림)

'🍞 FrontEnd > React' 카테고리의 다른 글

[React] 합성 이벤트(SyntheticEvent)  (0) 2022.10.22
[React] 네트워크 통신 Fetch API  (0) 2022.10.22
[React] Ref로 DOM 다루기 & Form 다루기  (0) 2022.10.21
[React] state변경 시, setState, useState 사용 이유  (0) 2022.10.06
[React] CSR과 SSR 차이  (0) 2022.10.05
'🍞 FrontEnd/React' 카테고리의 다른 글
  • [React] 합성 이벤트(SyntheticEvent)
  • [React] 네트워크 통신 Fetch API
  • [React] Ref로 DOM 다루기 & Form 다루기
  • [React] state변경 시, setState, useState 사용 이유
박빵이
박빵이
2025년에도 갓생살기
  • 박빵이
    기억보다 기록
    박빵이
  • 전체
    오늘
    어제
    • 분류 전체보기 (337)
      • 🍞 FrontEnd (97)
        • HTML+CSS (4)
        • JavaScript (17)
        • TypeScript (4)
        • React (52)
        • Next.js (2)
        • Android (15)
      • 🍞 BackEnd (24)
        • Java (15)
        • Node.js (6)
        • Spring (1)
      • 🍞 Cloud & Infra (0)
        • AWS SAA (0)
        • Microsoft Azure (0)
      • 🍞 Algorithm (147)
        • C++ (4)
        • Baekjoon (41)
        • Programmers (97)
      • 🍞 Computer Science (18)
        • 운영체제 (1)
        • 데이터 통신 (6)
        • 네트워크 (6)
        • 데이터베이스 (1)
      • 🍞 대외활동 & 부트캠프 (42)
        • 삼성 청년 SW 아카데미 (1)
        • LG유플러스 유레카 (0)
        • 한국대학생IT경영학회 (1)
        • IT연합동아리 UMC (17)
        • 길벗 블로깅 멘토 (18)
        • IT연합동아리 피로그래밍 (3)
        • 개발 컨퍼런스 (2)
  • 블로그 메뉴

    • Admin
  • 링크

    • GitHub
  • 인기 글

  • 태그

    안드로이드
    위상정렬
    프로그래머스
    umc
    코틀린
    길벗 블로깅 멘토
    길벗 블로깅 멘토링
    level1
    map
    Java
    react
    JavaScript
    level2
    유니온파인드
    알고리즘
    Android
    백준
    Front
    C++
    코딩자율학습
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
박빵이
[React] Error 다루기
상단으로

티스토리툴바