코딩 TIL (오늘 배운거)/풀스택 위클리페이퍼

[6주차 위페] React 생명주기 (Life Cycle)

손냥로 2025. 8. 10. 15:41

컴포넌트가 생성, 업데이트, 제거되는 일련의 과정을 의미합니다. 이 생명주기를 이해하면 상태(state), 속성(props), DOM 처리 등에서 정확한 타이밍에 코드 실행이 가능해집니다.

 

React의 생명주기는 클래스형 컴포넌트와 함수형 컴포넌트에서 조금 다르게 적용됩니다.


1. 함수형 컴포넌트의 생명주기 (React Hooks 기준)

함수형 컴포넌트에서는 useEffect, useLayoutEffect 등의 Hook을 사용해 생명주기를 제어합니다.

생명주기 흐름 (메서드)

생명 주기 메서드 이름 설명
마운트 (Mount) useEffect(() => {}, []) 컴포넌트가 DOM에 처음 렌더링
업데이트 (Update) useEffect(() => {}, [state]) 상태(state)나 props가 변경되어 재렌더링
언마운트 (Unmount) useEffect의 return 함수 컴포넌트가 DOM에서 제거

📌 예시 코드:


2. 클래스형 컴포넌트의 생명주기

생명주기 흐름 (메서드)

생명 주기 메서드 이름 설명
마운트 constructor() 초기화 (state 설정 등)
static getDerivedStateFromProps() props로부터 state 동기화
render() JSX 렌더링
componentDidMount() DOM 생성 이후, 초기 API 호출 등
업데이트 static getDerivedStateFromProps() props 변경 시 호출됨
shouldComponentUpdate() 렌더링 여부 결정 (성능 최적화)
render() 변경된 내용 렌더링
getSnapshotBeforeUpdate() 업데이트 직전 DOM 상태 저장
componentDidUpdate() 업데이트 후 작업 (API 호출 등)
언마운트 componentWillUnmount() 정리 작업 (타이머, 구독 해제 등)

✅ 마운트 / 업데이트 / 언마운트 간단 요약 (비교표)

마운트 useEffect(() => {}, []) componentDidMount()
업데이트 useEffect(() => {}, [deps]) componentDidUpdate()
언마운트 useEffect의 return 함수 componentWillUnmount()
 

✅ 예시 용도별 정리

API 호출 (초기) useEffect(() => {}, []) or componentDidMount()
이벤트 리스너 등록 / 해제 useEffect의 return 활용
DOM 접근 전 처리 useLayoutEffect() (Hook 전용)
렌더링 여부 제어 shouldComponentUpdate() (클래스 전용)