πŸ’» DEV/React

[React] React 의 생λͺ…μ£ΌκΈ°(Life Cycle) λž€?

vodkassi 2021. 5. 27. 00:07
728x90

✨ Life Cycle μ΄λž€?

μ»΄ν¬λ„ŒνŠΈκ°€ λΈŒλΌμš°μ €μƒμ— λ‚˜νƒ€λ‚˜κ³ (Mount), μ—…λ°μ΄νŠΈ 되고(Update), μ‚¬λΌμ§€λŠ” 일련의 과정을 μΉ­ν•œλ‹€.

μ΄λŸ¬ν•œ κ³Όμ •μ—μ„œ ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œλ₯Ό Life Cycle Method 라고 λΆ€λ₯΄λ©°, ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆλ‹€. (ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλŠ” React 16.8 버전뢀터 λ„μž…λ˜μ—ˆμœΌλ©°, ν˜„μž¬λŠ” useState λ‚˜ useEffect둜 λ”μš± 많이 ν™œμš©λœλ‹€)

각 λ‹¨κ³„λ³„λ‘œ ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œμ˜ μˆœμ„œμ™€ μ’…λ₯˜κ°€ λ‹€λ₯΄λ‹€.

 

✨ 1. Mount : DOM 에 μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό λ„£λŠ” μž‘μ—…

constructor:

μ»΄ν¬λ„ŒνŠΈ 클래슀의 μƒμ„±μž ν•¨μˆ˜μ΄μž, μ»΄ν¬λ„ŒνŠΈκ°€ 생성될 λ•Œ ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜μ΄λ‹€. State와 λ‹€λ₯Έ κ°’λ“€μ˜ μ΄ˆκΈ°κ°’μ„ μ§€μ •ν•  λ•Œ μ‚¬μš©ν•œλ‹€.

λ˜ν•œ, props λ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ λ°›κ³ , super(props) λ₯Ό μ„ μ–Έν•΄μ£Όμ–΄ λΆ€λͺ¨μ˜ λ©”μ„œλ“œλ₯Ό 상속받을 수 μžˆλ„λ‘ ν•œλ‹€.

 

getDerivedStateFromProps: props 와 state 값을 λ™κΈ°ν™”ν•œλ‹€.

 

render: ν•„μˆ˜μš”μ†Œμ΄λ©°, λ¦¬μ•‘νŠΈ μš”μ†Œλ₯Ό λ°˜ν™˜ν•œλ‹€.

 

ComponentDidMount: μ»΄ν¬λ„ŒνŠΈλ₯Ό μƒμ„±ν•˜κ³  첫 λ Œλ”λ§μ΄ 끝났을 λ•Œ ν˜ΈμΆœλœλ‹€.

 

✨ 2. Update : μ»΄ν¬λ„ŒνŠΈμ˜ state λ‚˜ props 에 λ³€ν™”κ°€ 생길 λ•Œ

getDerivedStateFromProps

 

shouldComponentUpdate:

true λ₯Ό λ°˜ν™˜ν•˜λ©΄ μ»΄ν¬λ„ŒνŠΈλ₯Ό λ¦¬λ Œλ”λ§ν•˜λ©°, false λ₯Ό λ°˜ν™˜ν•  경우 λ¦¬λ Œλ”λ§μ„ μ§„ν–‰ν•˜μ§€ μ•Šκ³  μ•„λž˜μ˜ λ‚˜λ¨Έμ§€ ν•¨μˆ˜λ“€λ„ ν˜ΈμΆœν•˜μ§€ μ•ŠλŠ”λ‹€.

 

render: μœ„μ™€ λ™μΌν•˜λ‹€.

 

getSnapshotBeforeUpdate: λ³€κ²½λœ μš”μ†Œκ°€ DOM 에 반영되기 전에 ν˜ΈμΆœλœλ‹€.

 

ComponentDidUpdate: λ¦¬λ Œλ”λ§ 후에 ν˜ΈμΆœλœλ‹€.

 

✨ 3. Unmount : μ»΄ν¬λ„ŒνŠΈκ°€ DOM μ—μ„œ 제거될 λ•Œ

componentWillUnmount: μ»΄ν¬λ„ŒνŠΈκ°€ 제거되기 전에 ν˜ΈμΆœλœλ‹€.

 

 

참고 자료

React λ¦¬μ•‘νŠΈ - μ»΄ν¬λ„ŒνŠΈ 생λͺ… μ£ΌκΈ° (Component Life Cycle)

W3Schools