๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป DEV/React

[React] React ์˜ ์ƒ๋ช…์ฃผ๊ธฐ(Life Cycle) ๋ž€?

by vodkassi 2021. 5. 27.
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

๋Œ“๊ธ€