[React] 컴포넌트 생명주기 : useEffect, 마운트, 언마운트

2025. 5. 1. 04:41·Library & Runtime/React

 

🔨 마운트 (mount)

컴포넌트가 처음 화면에 나타나는 시점

  • JSX로 만든 컴포넌트가 실제 DOM에 "붙는" 순간
  • 초기화 작업(데이터 불러오기, 이벤트 리스너 등록 등)을 주로 이 시점에 처리
  • useEffect(() => { ... }, [])의 본문이 실행되는 타이밍

 

🧩 예시

{isVisible && <MyComponent />}
  • isVisible가 true가 되는 순간 → MyComponent가 마운트됨

 


 

🧹 언마운트 (unmount)

컴포넌트가 화면에서 사라지는 시점

  • React가 필요 없어진 컴포넌트를 DOM에서 제거하는 시점
  • useEffect의 cleanup 함수가 실행되는 타이밍 (타이머 제거, 이벤트 해제 등)
  • useEffec의 return 함수가 이 시점에 실행됩

 

🧩 예시

{isVisible && <MyComponent />}
  • isVisible가 false가 되는 순간 → MyComponent가 언마운트됨

 


 

📊 마운트 vs 언마운트

단계 의미 관련 코드
마운트 컴포넌트가 DOM에 추가됨 useEffect(() => { ... }, []) 실행
업데이트 상태나 props 변경 useEffect(..., [(변수)]) 재실행
언마운트 컴포넌트가 DOM에서 제거됨 return () => { ... } 실행

 

 

🧩 예시

import { useEffect } from 'react';

const MyComponent = () => {
  useEffect(() => {
    console.log('✅ 마운트됨');

    return () => {
      console.log('❌ 언마운트됨');
    };
  }, []);

  return <div>컴포넌트</div>;
};

 

 


 

🚫 정리하지 않으면 생기는 문제 (cleanup)

  • 이벤트 리스너가 계속 남아서 메모리 누수 발생
  • setInterval이나 setTimeout이 계속 동작
  • 이미 사라진 컴포넌트에서 상태를 변경하려다 오류 발생

항상 언마운트 시 cleanup 작업을 꼭 해줘야 함

 

 


 

📝 마무리

  • 마운트: 컴포넌트가 등장할 때
  • 언마운트: 컴포넌트가 사라질 때
  • useEffect 안의 return 함수는 언마운트 시 자동 호출됨

 

반응형

'Library & Runtime > React' 카테고리의 다른 글

[React] 무거운 연산 최적화 : 일반 계산 vs useMemo  (0) 2025.05.03
[React] 자식 컴포넌트 렌더링 : 일반 함수 vs useCallback  (0) 2025.05.02
[React/S3] 이미지 저장 구현 (+ CORS 에러 해결)  (2) 2024.11.16
camelCase 요청 데이터를 snake_case로 변환하기  (0) 2024.11.05
'Library & Runtime/React' 카테고리의 다른 글
  • [React] 무거운 연산 최적화 : 일반 계산 vs useMemo
  • [React] 자식 컴포넌트 렌더링 : 일반 함수 vs useCallback
  • [React/S3] 이미지 저장 구현 (+ CORS 에러 해결)
  • camelCase 요청 데이터를 snake_case로 변환하기
올콩
올콩
콩 심은 데 콩 난다
  • 올콩
    콩스토리
    올콩
  • 전체
    오늘
    어제
    • 분류 전체보기 (140)
      • SSAFY (10)
      • Algorithm (67)
        • 이론 (5)
        • 백준 (BOJ) (61)
        • 프로그래머스 (1)
      • Language (9)
        • JavaScript (0)
        • TypeScript (0)
        • Java (9)
        • Python (0)
      • Library & Runtime (15)
        • React (13)
        • Node.js (2)
      • Framework (9)
        • 이론 (2)
        • Next.js (3)
        • Vue (4)
      • DevOps (3)
        • Git (3)
      • WEB (17)
        • HTML (9)
        • error (6)
        • etc (2)
      • Computer (5)
        • 자격증 (2)
        • tip (2)
        • etc (1)
      • CS (5)
        • Network (1)
        • Blockchain (4)
  • 블로그 메뉴

    • GitHub
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dfs
    카카오맵
    티스토리챌린지
    DP
    React
    백준
    SSAFYcial
    Algorithm
    해시
    렌더링최적화
    SSAFY
    kakaomap
    오블완
    Next.js
    github
    vue
    딕셔너리
    싸피
    강의
    알고리즘
    파이썬
    재귀
    html5
    우선순위큐
    Error
    bfs
    블록체인
    자바
    소수
    Java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
올콩
[React] 컴포넌트 생명주기 : useEffect, 마운트, 언마운트
상단으로

티스토리툴바