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

2025. 5. 1. 04:41·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 함수는 언마운트 시 자동 호출됨

 

반응형

'React' 카테고리의 다른 글

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

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

  • 공지사항

  • 인기 글

  • 태그

    해시
    html5
    오블완
    티스토리챌린지
    Algorithm
    재귀
    싸피
    SSAFYcial
    Error
    SSAFY
    블록체인
    DP
    강의
    백준
    파이썬
    리액트
    Next.js
    우선순위큐
    누적합
    힙
    Java
    dfs
    bfs
    알고리즘
    vue
    딕셔너리
    React
    구현
    Heap
    브루트포스
  • 최근 댓글

  • 최근 글

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

티스토리툴바