# [[Component Lifecycle]] ## πŸ“Œ Brief Summary μ»΄ν¬λ„ŒνŠΈ 라이프사이클(Component Lifecycle)은 μ»΄ν¬λ„ŒνŠΈκ°€ λ Œλ”λ§λ˜κ³ , μ—…λ°μ΄νŠΈλ˜λ©°, 마운트 ν•΄μ œ(unmount)λ˜λŠ” 일련의 과정을 μ˜λ―Έν•©λ‹ˆλ‹€. μ΅œμ‹  ν•¨μˆ˜ν˜• Reactμ—μ„œλŠ” `useEffect`와 같은 ν›…(Hook)을 μ‚¬μš©ν•˜μ—¬ 라이프사이클에 λ”°λ₯Έ λΆ€μˆ˜ 효과(side effects)λ₯Ό κ΄€λ¦¬ν•˜λ©°, ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” `componentDidCatch`와 같은 νŠΉμ • 라이프사이클 λ©”μ„œλ“œλ₯Ό ν™œμš©ν•©λ‹ˆλ‹€ [1, 2]. 특히 μ»΄ν¬λ„ŒνŠΈκ°€ 마운트 ν•΄μ œλ  λ•Œ μ μ ˆν•œ 정리(cleanup) μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것은 λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ₯Ό λ°©μ§€ν•˜κ³  μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ•ˆμ •μ„±μ„ μœ μ§€ν•˜λŠ” 데 ν•„μˆ˜μ μž…λ‹ˆλ‹€ [3]. ## πŸ“– Core Content * **ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ™€ `useEffect` ν›… ν™œμš©** μ΅œμ‹  React의 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” 주둜 `useEffect`λ₯Ό 톡해 라이프사이클과 κ΄€λ ¨λœ λΆ€μˆ˜ 효과(side effects)λ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€. ν”νžˆ λ°œμƒν•˜λŠ” 문제 쀑 ν•˜λ‚˜λŠ” 이벀트 λ¦¬μŠ€λ„ˆλ‚˜ ꡬ독(subscription)κ³Ό 같은 효과λ₯Ό μ»΄ν¬λ„ŒνŠΈ 마운트 ν•΄μ œ μ‹œ 정리(cleanup)ν•˜μ§€ μ•ŠλŠ” κ²ƒμž…λ‹ˆλ‹€ [1]. μ΄λŸ¬ν•œ 정리 λˆ„λ½μ€ μ‹œκ°„μ΄ 지남에 따라 μ„±λŠ₯ μ €ν•˜μ™€ λ©”λͺ¨λ¦¬ λˆ„μˆ˜(Memory Leak)λ₯Ό μœ λ°œν•  수 μžˆμœΌλ―€λ‘œ, `useEffect`μ—μ„œ 항상 정리 ν•¨μˆ˜λ₯Ό λ°˜ν™˜ν•˜μ—¬ μ»΄ν¬λ„ŒνŠΈκ°€ μ–Έλ§ˆμš΄νŠΈλ  λ•Œ λ¦¬μ†ŒμŠ€κ°€ ν•΄μ œλ˜λ„λ‘ ν•΄μ•Ό ν•©λ‹ˆλ‹€ [1, 4]. * **ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ 라이프사이클 λ©”μ„œλ“œμ™€ μ—λŸ¬ 경계(Error Boundaries)** ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλŠ” κ³ μœ ν•œ 라이프사이클 λ©”μ„œλ“œλ₯Ό κ°€μ§‘λ‹ˆλ‹€. `static getDerivedStateFromError()` λ˜λŠ” `componentDidCatch()` 쀑 ν•˜λ‚˜ 이상을 μ •μ˜ν•˜λ©΄ ν•΄λ‹Ή 클래슀 μ»΄ν¬λ„ŒνŠΈλŠ” ν•˜μœ„ 트리의 μ—λŸ¬λ₯Ό ν¬μ°©ν•˜λŠ” 'μ—λŸ¬ 경계(Error Boundary)' 역할을 μˆ˜ν–‰ν•˜κ²Œ λ©λ‹ˆλ‹€ [2]. μ—λŸ¬ κ²½κ³„λŠ” ν•˜μœ„ μ»΄ν¬λ„ŒνŠΈ 트리의 λ Œλ”λ§ 쀑, μƒμ„±μž λ‚΄λΆ€, 그리고 라이프사이클 λ©”μ„œλ“œ λ‚΄λΆ€μ—μ„œ λ°œμƒν•˜λŠ” μ—λŸ¬λ₯Ό ν¬μ°©ν•©λ‹ˆλ‹€ [5]. ν•˜μœ„ μ»΄ν¬λ„ŒνŠΈμ˜ `componentDidUpdate`와 같은 라이프사이클 λ©”μ„œλ“œ μ•ˆμ—μ„œ μ—λŸ¬κ°€ λ°œμƒν•˜λ”λΌλ„, μ΄λŠ” κ°€μž₯ κ°€κΉŒμš΄ μ—λŸ¬ κ²½κ³„λ‘œ μ •μƒμ μœΌλ‘œ μ „νŒŒλ˜μ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 전체가 λ©ˆμΆ”λŠ” 것을 λ°©μ§€ν•©λ‹ˆλ‹€ [6]. * **μ»΄ν¬λ„ŒνŠΈ μ–Έλ§ˆμš΄νŠΈ μ‹œ λ©”λͺ¨λ¦¬ λˆ„μˆ˜ 예방** SPA(Single Page Application) ν™˜κ²½μ—μ„œ μ»΄ν¬λ„ŒνŠΈ 라이프사이클 μ£ΌκΈ°λ₯Ό μ΄ν•΄ν•˜λŠ” 것은 λ©”λͺ¨λ¦¬ λˆ„μˆ˜ 탐지 및 μ˜ˆλ°©μ— 맀우 μ€‘μš”ν•©λ‹ˆλ‹€ [7]. μ»΄ν¬λ„ŒνŠΈκ°€ μ–Έλ§ˆμš΄νŠΈλ  λ•Œ λ“±λ‘λœ 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό μ œκ±°ν•˜μ§€ μ•ŠμœΌλ©΄ μ°Έμ‘°κ°€ 계속 μœ μ§€λ˜μ–΄ κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(Garbage Collection)이 이루어지지 μ•ŠμŠ΅λ‹ˆλ‹€ [3, 7]. 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ Reactμ—μ„œλŠ” `useEffect`의 λ°˜ν™˜ ν•¨μˆ˜μ—μ„œ 정리λ₯Ό μˆ˜ν–‰ν•˜κ³ , Vueμ—μ„œλŠ” `beforeUnmount` 라이프사이클 λ‹¨κ³„μ—μ„œ κ°μ‹œμž(watchers)와 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό νŒŒκ΄΄ν•˜λŠ” λ“± 각 ν”„λ ˆμž„μ›Œν¬μ˜ 라이프사이클에 맞좘 μ μ ˆν•œ 정리 νŒ¨ν„΄μ„ κ΅¬ν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€ [3]. ## πŸ”— Knowledge Connections - **Related Topics:** [[React Hooks]], [[useEffect]], [[Error Boundaries]], [[Memory Leaks]] - **Projects/Contexts:** [[Single Page Applications (SPAs)]], [[Frontend Performance Optimization]] - **Contradictions/Notes:** 제곡된 μ†ŒμŠ€μ—μ„œλŠ” λΌμ΄ν”„μ‚¬μ΄ν΄μ˜ λͺ¨λ“  단계λ₯Ό ν¬κ΄„μ μœΌλ‘œ μ„€λͺ…ν•˜κΈ°λ³΄λ‹€λŠ”, 주둜 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ 마운트 ν•΄μ œ μ‹œ λ©”λͺ¨λ¦¬ λˆ„μˆ˜ λ°©μ§€(useEffect의 cleanup)와 ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ μ—λŸ¬ 핸듀링(Error Boundaries) λ§₯λ½μ—μ„œ λΌμ΄ν”„μ‚¬μ΄ν΄μ˜ νŠΉμ • 츑면을 μ§‘μ€‘μ μœΌλ‘œ 닀루고 μžˆμŠ΅λ‹ˆλ‹€. --- *Last updated: 2026-04-26*