[react] JSX에서 라이프사이클, componentDidCatch 사용하기

React에서는 라이프사이클 메서드를 사용하여 컴포넌트의 생성, 업데이트, 소멸과 관련된 작업을 정의할 수 있습니다. JSX 내에서 라이프사이클 메서드를 사용하는 방법을 살펴보겠습니다. 또한 componentDidCatch 메서드를 통해 컴포넌트의 에러를 처리하는 방법에 대해서도 알아볼 것입니다.

라이프사이클 메서드란?

라이프사이클 메서드는 React 컴포넌트의 렌더링, 업데이트, 소멸과 관련된 다양한 시점에 실행되는 함수들을 말합니다. 주요 라이프사이클 메서드에는 componentDidMount, componentDidUpdate, componentWillUnmount 등이 있습니다.

JSX 내에서 라이프사이클 메서드 사용하기

JSX 내에서 라이프사이클 메서드를 사용하기 위해서는 class로 작성된 컴포넌트를 사용해야 합니다. 함수형 컴포넌트에서는 라이프사이클 메서드를 사용할 수 없습니다. 또한, 라이프사이클 메서드를 사용하기 위해서는 React.Component를 상속하는 클래스를 만들어야 합니다.

class MyComponent extends React.Component {
  componentDidMount() {
    // 컴포넌트가 마운트된 직후 실행되는 로직을 작성합니다.
  }

  componentDidUpdate(prevProps, prevState) {
    // 컴포넌트가 업데이트된 직후 실행되는 로직을 작성합니다.
  }

  componentWillUnmount() {
    // 컴포넌트가 제거되기 직전 실행되는 로직을 작성합니다.
  }
}

위와 같이 class로 선언된 컴포넌트 내에서 라이프사이클 메서드를 사용할 수 있습니다.

componentDidCatch를 이용한 에러 핸들링

componentDidCatch자식 컴포넌트에서 발생한 에러를 처리하는 메서드입니다. 이 메서드를 사용하면 컴포넌트 트리 내에서 발생한 에러를 포착하여 에러 처리 로직을 수행할 수 있습니다.

class ErrorBoundary extends React.Component {
  constructor(props) {
    super(props);
    this.state = { hasError: false };
  }

  componentDidCatch(error, info) {
    this.setState({ hasError: true });
    // 에러 로깅 또는 사용자에게 에러 메시지 표시 등의 작업을 수행합니다.
  }

  render() {
    if (this.state.hasError) {
      return <h1>에러가 발생했습니다.</h1>;
    }
    return this.props.children;
  }
}

위와 같이 componentDidCatch를 이용하여 에러를 핸들링하는 Error Boundary 컴포넌트를 생성할 수 있습니다.

결론

JSX 내에서 라이프사이클 메서드를 사용하고, componentDidCatch를 이용하여 예외 상황을 처리하는 방법에 대해 알아보았습니다. 이를 활용하여 React 애플리케이션 개발 과정에서 더욱 효율적으로 작업할 수 있을 것입니다.

더 많은 정보는 React 공식 문서에서 확인하실 수 있습니다.