React Lifecycle (class component)
#๏ธโฃReact Lifecycle
React ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋ ๋, ์ ๋ฐ์ดํธ๋ ๋, ๊ทธ๋ฆฌ๊ณ ์ ๊ฑฐ๋ ๋ ์ผ์ด๋๋ ์ผ๋ จ์ ๋จ๊ณ๋ฅผ ์ค๋ช ํ๋ ๊ฐ๋ ์ผ๋ก ๋ชจ๋ React ์ปดํฌ๋ํธ๋ ๋์ผํ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ฑฐ์น๋ค.
์์ฑ(mounting) โ ์ ๋ฐ์ดํธ(updating) โ ์ ๊ฑฐ(unmounting)
์ปดํฌ๋ํธ๋ ํ๋ฉด์ ์ถ๊ฐ๋ ๋ ๋ง์ดํธ๋๋ค.
์ปดํฌ๋ํธ๋ ์๋ก์ด props๋ state๋ฅผ ๋ฐ์ผ๋ฉด ์ ๋ฐ์ดํธ๋๋ค. ์ด๋ ๋ณดํต ์ํธ์์ฉ์ ๋ํ ์๋ต์ผ๋ก ๋ฐ์ํ๋ค.
ํ๋ฉด์์ ์ ๊ฑฐ๋๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ํด์ ๋๋ค.
ํด๋์คํ ์ปดํฌ๋ํธ์ ๊ฒฝ์ฐ ํน์ ๋ผ์ดํ ์ฌ์ดํด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ ํจ์ํ ์ปดํฌ๋ํธ์์๋ Hook์ ์ฌ์ฉํ์ฌ ํด๋์คํ component ์ lifeCycle์ฒ๋ผ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
~ will
์ด๋ค '์์ ์ ์ํํ๊ธฐ ์ ์ ์คํ๋๋ ๋ฉ์๋์ ๊ด๋ จ๋ ์ฉ์ด
~ did
์ด๋ค' ์์ ์ ์ํํ ์ดํ'์ ์คํ๋๋ ๋ฉ์๋์ ๊ด๋ จ๋ ์ฉ์ด
mount
์ปดํฌ๋ํธ ๋ด์์ 'DOM์ด ์์ฑ'๋๊ณ ์น ๋ธ๋ผ์ฐ์ ์์ ๋ํ๋๋ ๋ฉ์๋์ ๊ด๋ จ๋ ์ฉ์ด
update
์ปดํฌ๋ํธ ๋ด์์ '๋ณํ'๊ฐ ๋ฐ์ํ์ ๋ ์ํํ๋ ๊ฒ ex) props, state, ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ๋ฆฌ ๋ ๋๋ง, forceUpdate๋ฅผ ํตํด ๊ฐ์ ๋ก ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ
unmount
์ปดํฌ๋ํธ ๋ด์์ 'DOM์ด ์ ๊ฑฐ'๋๊ณ ์น ๋ธ๋ผ์ฐ์ ์์ ์ฌ๋ผ์ง๋ ๋ฉ์๋์ ๊ด๋ จ๋ ์ฉ์ด
#๏ธโฃClass Component Lifecycle
1. Mounting
โธconstructor()
์ปดํฌ๋ํธ๊ฐ ํธ์ถ๋์ด ๋ก๋๊ฐ ๋ ์ดํ ๋ ๋๋ง๋๊ธฐ ์ด์ ์ '๋ฐ์ดํฐ *๋ฐ์ธ๋ฉ', '์ด๊ธฐํ'๋ฅผ ์ํํ๊ธฐ ์ํด ํธ์ถ๋๋ ํจ์. ๋ฉ์๋๋ฅผ ๋ฐ์ธ๋ฉํ๊ฑฐ๋ state๋ฅผ ์ด๊ธฐํํ๋ ์์ ์ด ์๋ค๋ฉด, ํด๋น React ์ปดํฌ๋ํธ์๋ ์์ฑ์๋ฅผ ๊ตฌํํ์ง ์์๋ ๋๋ค.
*๋ฐ์ธ๋ฉ : ๋ ๊ฐ์ ๋ฐ์ดํฐ ์์ค(๋๋ ๋์ผํ ๋ฐ์ดํฐ์ ๋ํ ๋ ๊ฐ์ ๊ฐ๋ณ ํํ)๋ฅผ ํจ๊ป ์ฐ๊ฒฐํ๊ณ ๋๊ธฐํ ์ํ๋ฅผ ์ ์งํ๋ ์ผ๋ฐ์ ์ธ ๊ธฐ์ . react์์๋ ๋ถ๋ชจ โ ์์ ๋จ๋ฐฉํฅ ๋ฐ์ธ๋ฉ์ด ์ด๋ฃจ์ด์ง๋ค.
โธrender()
๋ฏธ๋ฆฌ ๊ตฌํ๋ HTML์ ํ๋ฉด์์ ๊ทธ๋ ค์ง๋ ๊ณผ์ (๋ ๋๋ง)์ ์ํํ๋ ํจ์ ํด๋์ค ์ปดํฌ๋ํธ์์ ๋ฐ๋์ ๊ตฌํ๋์ผ ํ๋ ์ ์ผํ ๋ฉ์๋์ด๋ฉฐ React.Component์ ํ์ class์์ ๋ฐ๋์ ์ ์ํด์ผ ํ๋ ๋ฉ์๋์ด๋ค.
ํด๋น ๋ฉ์๋ ์์์๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก ์ ๋ฌ๋ฐ์ 'props ๊ฐ์ ์ ๊ทผ'์ด ๊ฐ๋ฅํ๋ค.
constructor()์์ ์ ์ํ 'state ๊ฐ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
ํด๋น ๊ณต๊ฐ์์๋ setState()๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
โธcomponentDidMount()
ํ๋ฉด์ด ๋ ๋๋ง ๋ ์ดํ์ ํด๋น '์ปดํฌ๋ํธ๋ฅผ DOM ํธ๋ฆฌ์ ์ฝ์ '(๋ง์ดํธ)์ด ๋๋ฉด ๋ฐ์ํ๋ ๋ฉ์๋
์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ํ๋ ์์ํฌ์ ํจ์๋ฅผ ํธ์ถํ๊ฑฐ๋ ์ด๋ฒคํธ ๋ฑ๋ก์ ์ฌ์ฉ
setTimeout, setInterval, ๋คํธ์ํฌ ์์ฒญ ๊ฐ์ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ
2. Updating
โธcomponentDidUpdate(prevProps, prevState, snapshot)
์ปดํฌ๋ํธ ๋ด์์ '๋ณํ'๊ฐ ๋ฐ์๋ ์ดํ ํธ์ถ๋๋ ๋ฉ์๋
DidMount()๊ฐ ์ฒซ ๋ ๋๋ง ํ์ ํธ์ถ ๋๋ ํจ์๋ผ๋ฉด, DidUpdate()๋ ๋ฆฌ๋ ๋๋ง์ ์๋ฃํ ํ ์คํ๋๋ ํจ์์ด๋ค.
props์ ๋ณ๊ฒฝ : ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ ๋ฐ์ props ๊ฐ์ ๋ณํ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ
state์ ๋ณ๊ฒฝ : ํด๋น ์ปดํฌ๋ํธ ๋ด์์ state์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ
forceUpdate() ์ํ: ๋ฉ์๋๋ฅผ ํตํด ๊ฐ์ ๋ก ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ
3. Unmounting
โธcomponentWillUnmount()
์ปดํฌ๋ํธ๊ฐ DOM์์ ์ ๊ฑฐ๋๊ธฐ ์ง์ ์ ํธ์ถ๋๋ ๋ฉ์๋ (๋๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ง ์์ ๋) 1. ์ปดํฌ๋ํธ์์ ์ฌ์ฉ ์ค์ธ ๋ฆฌ์์ค๋ฅผ ํด์ ํ๊ฑฐ๋ ๊ตฌ๋ ์ ์ทจ์ํ๋ ๊ฒฝ์ฐ 2. ํ์ด๋จธ๋ฅผ ํด์ ํ๋ ๊ฒฝ์ฐ 3. ๋คํธ์ํฌ ์์ฒญ์ ์ทจ์ํ๋ ๋ฑ์ ํด๋ฆฐ์ ์์ ์ ํ๋ ๊ฒฝ์ฐ
๐๐ปClass Component Lifecycle ์ฅ์
๋ถํ์ํ ์
๋ฐ์ดํธ(๋ฆฌ ๋ ๋๋ง) ๋ฐฉ์ง
ํด๋์คํ ์ปดํฌ๋ํธ์์๋
shouldComponentUpdate
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ ๋ ๋๋ง ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ์ ์ํ๋ ์์ฑ์ด ๋ณ๊ฒฝ๋์์ ๋ ๋ฆฌ ๋ ๋๋ง์ ์ํํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ์ฌ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํ ์ ์๋ค.
๋จ์ํ๋ ์ํ ๊ด๋ฆฌ
setState
๋ฐ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ํ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ ์ ์๋ค.์ด๋ฅผ ํตํด ์ํ์ ๋ณ๊ฒฝ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌ, ์ฝ๋์ ๊ฐ๋ ์ฑ ํฅ์, ์ํ ๊ด๋ จ ๋ฒ๊ทธ๋ฅผ ์ค์ผ ์ ์๋ค.
๋น๋๊ธฐ ์์
์ฒ๋ฆฌ ์ฉ์ด์ฑ
componentDidMount
,componentDidUpdate
๋ฑ์ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ค.์ด๋ฅผ ํตํด ์ด๊ธฐ ๋ ๋๋ง์ด ์๋ฃ๋ ํ์ ๋น๋๊ธฐ ์์ ์ ์ํํ๊ฑฐ๋, ์ํ ๋๋ ์์ฑ์ด ๋ณ๊ฒฝ๋ ํ์ ๋น๋๊ธฐ ์์ ์ ๋ค๋ฃฐ ์ ์๋ค.
๐๐ปClass Component Lifecycle ๋จ์
์ํ ๋ฐ ์์ฑ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ
๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๊ณ ์ฝ๋์ ์ ์ง๋ณด์ ๋ฐ ์ดํด๊ฐ ์ด๋ ค์์ง ์ ์๋ค.
์ํ ๊ด๋ฆฌ๋ฅผ ์ํด React Hooks๋ Redux์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค.
๋น๋๊ธฐ ์ฝ๋ ๊ด๋ฆฌ์ ์ด๋ ค์
๋ณต์กํ ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ ๋ ๋ฐ์ํ๋ ์ฝ๋์ ๋ณต์ก์ฑ๊ณผ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
์ด๋ฌํ ์ด๋ ค์์ ์ฝ๋๋ฅผ ์ ์งํ๊ณ ์ดํดํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์๋ค.
ex. ์ฌ๋ฌ ๋์ ๋คํธ์ํฌ ์์ฒญ์ ๊ด๋ฆฌํ๊ฑฐ๋ ๋น๋๊ธฐ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์ฝ๋๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ค๊ณ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ๋์ผ ์ ์๋ค.
๋น๋๊ธฐ ์ํ ๊ด๋ฆฌ๋ ๋น๋๊ธฐ ์์ ์ ๊ด๋ฆฌํ๋ ๊ฒ๋ณด๋ค ๋ช ํํ๊ณ ์ฒด๊ณ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ React Hooks ๋๋ ์ธ๋ถ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ๋ ์ ์ฒ๋ฆฌ๋๋ค.
์ฐธ๊ณ ์ฌ์ดํธ
[React] ํด๋์ค ์ปดํฌ๋ํธ ์๋ช ์ฃผ๊ธฐ(lifecycle) ์ดํดํ๊ธฐ
The lifecycle of an Effect | Effect์ ์๋ช ์ฃผ๊ธฐ
[React] ์ปดํฌ๋ํธ ์๋ช ์ฃผ๊ธฐ / ํด๋์คํ , ํจ์ํLifeCycle
Last updated