React.js 를 배워보자/2. React.js 기본 개념

라이프 사이클 메서드

_Blue_Sky_ 2024. 10. 1. 18:52
728x90
728x90

React 컴포넌트 라이프 사이클 메서드: 심층 분석 및 실제 예시

React 컴포넌트는 DOM을 조작하고 렌더링하는 데 있어서 효율적이고 재사용 가능한 단위입니다. 이러한 컴포넌트들은 생성, 업데이트, 그리고 제거되는 과정을 거치는데, 이를 라이프 사이클이라고 합니다. 라이프 사이클 메서드는 컴포넌트의 각 단계에서 특정 작업을 수행하도록 해주는 함수들입니다.

왜 라이프 사이클 메서드를 알아야 할까요?

  • 컴포넌트 동작 이해: 컴포넌트가 어떻게 동작하는지 깊이 이해하는 데 도움을 줍니다.
  • 비동기 작업 관리: 서버에서 데이터를 가져오거나, 타이머를 설정하는 등의 비동기 작업을 적절한 시점에 수행할 수 있습니다.
  • DOM 조작: DOM에 직접 접근하여 필요한 작업을 수행할 수 있습니다.
  • 성능 최적화: 불필요한 렌더링을 방지하고 성능을 향상시킬 수 있습니다.

라이프 사이클 메서드 종류 및 설명

마운팅(Mounting)

  • constructor: 컴포넌트가 생성될 때 처음 호출됩니다. state 초기화, 이벤트 바인딩 등을 수행합니다.
  • static getDerivedStateFromProps: props가 변경될 때 state를 업데이트할 수 있습니다.
  • render: 컴포넌트를 화면에 나타내는 JSX를 반환합니다.
  • componentDidMount: 컴포넌트가 DOM에 완전히 마운트된 후 호출됩니다. 서버에서 데이터를 가져오거나, 타이머를 설정하는 등의 비동기 작업을 수행하기 좋은 시점입니다.
728x90

업데이팅(Updating)

  • static getDerivedStateFromProps: props가 변경될 때 state를 업데이트할 수 있습니다.
  • shouldComponentUpdate: 컴포넌트가 업데이트되어야 하는지 판단합니다. 성능 최적화를 위해 사용합니다.
  • render: props 또는 state가 변경될 때마다 호출되어 새로운 JSX를 반환합니다.
  • getSnapshotBeforeUpdate: DOM 업데이트가 발생하기 직전에 스냅샷을 캡처합니다.
  • componentDidUpdate: 컴포넌트가 업데이트된 후 호출됩니다.

언마운팅(Unmounting)

  • componentWillUnmount: 컴포넌트가 DOM에서 제거되기 직전에 호출됩니다. 타이머 해제, 이벤트 리스너 제거 등의 정리 작업을 수행합니다.

실제 예시

import React, { Component } from 'react';

class MyComponent extends Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 0
    };
  }

  componentDidMount() {
    this.intervalId = setInterval(() => {
      this.setState({ count: this.state.count + 1 });
    }, 1000);
  }

  componentWillUnmount() {
    clearInterval(this.intervalId);
  }

  render() {
    return (
      <div>
        <p>현재 카운트: {this.state.count}</p>
      </div>
    );
  }
}

export default MyComponent;
 
  • componentDidMount: 1초마다 카운트를 1씩 증가시키는 setInterval을 설정합니다.
  • componentWillUnmount: 컴포넌트가 언마운트될 때 setInterval을 해제하여 메모리 누수를 방지합니다.

라이프 사이클 메서드 활용 시 주의사항

  • shouldComponentUpdate: 성능 최적화를 위해 사용하지만, 오버 엔지니어링하지 않도록 주의해야 합니다.
  • setState: 비동기적으로 작동하므로, 바로 다음 상태를 사용하려면 콜백 함수를 사용해야 합니다.
  • this.forceUpdate(): 컴포넌트를 강제로 렌더링하지만, 남용하면 성능 문제를 일으킬 수 있습니다.

결론

React 컴포넌트의 라이프 사이클 메서드는 컴포넌트의 동작을 제어하고, 비동기 작업을 관리하며, 성능을 최적화하는 데 필수적인 역할을 합니다. 각 메서드의 특징과 용도를 정확히 이해하고, 적절하게 활용하여 효율적인 React 애플리케이션을 개발할 수 있습니다.

 

728x90
728x90

'React.js 를 배워보자 > 2. React.js 기본 개념' 카테고리의 다른 글

이벤트 처리  (0) 2024.10.01
렌더링  (0) 2024.10.01
JSX (JavaScript XML)  (0) 2024.10.01
props와 state  (0) 2024.10.01
React 함수형 컴포넌트와 클래스형 컴포넌트  (0) 2024.10.01