Lifecycle

1. ๊ฐœ์š”

Life Cycle์€ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๋œปํ•œ๋‹ค. ์ฆ‰, ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์ƒ์— ๋‚˜ํƒ€๋‚˜๊ณ , ์—…๋ฐ์ดํŠธ๋˜๊ณ , ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋Ÿฌํ•œ ๊ณผ์ •์ด Life Cycle์ด๊ณ  ์ด๋•Œ ํ˜ธ์ถœ ๋˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ Life Cycle Method(์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ)์ด๋‹ค.

์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋Š” ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋งŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Life Cycle๊ฐœ๋…์— ๋Œ€ํ•˜์—ฌ ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์„ ์Ÿ์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๋‹จ์ง€ ์–ด๋–ค ๊ฐœ๋…์ด๊ตฌ๋‚˜ ์ •๋„๋กœ ์ •๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐ€์ž.


2. Life Cycle & Life Cycle Method

React LIfe Cycle

์œ„๋Š” ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ, ์ œ๊ฑฐ ๋  ๋•Œ์˜ ๊ณผ์ •์„ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ฆผ์ด๋‹ค. ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ๊ฐ๊ฐ์˜ ๊ณผ์ •์—์„œ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค. ์ด๊ฒƒ์ด Life Cycle Method์ด๋‹ค.

ํ•˜๋‚˜ํ•˜๋‚˜ ์‚ดํŽด๋ณด์ž.


3. ๋งˆ์šดํŠธ

์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ƒ์„ฑ(๋งˆ์šดํŠธ)๋  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • constructor: ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ์„ฑ์ž ๋ฉ”์„œ๋“œ, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰ ๋จ

  • getDerivedStateFromProps: props๋กœ ๋ฐ›์•„์˜จ ๊ฒƒ์„ state์— ๋„ฃ์–ด์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ

  • render: ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋ง

  • componentDidMount: ์ปดํฌ๋„ŒํŠธ์˜ ์ฒซ๋ฒˆ์งธ ๋ Œ๋”๋ง์ด ๋งˆ์น˜๊ณ  ๋‚˜๋ฉด ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ


4. ์—…๋ฐ์ดํŠธ

์ปดํฌ๋„ŒํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์‹œ์ ์— ๋ฐœ์ƒํ•˜๋Š” ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • getDerivedStateFromProps: ๋งˆ์šดํŠธ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ์™€ ๊ฐ™์Œ, ์ปดํฌ๋„ŒํŠธ์˜ props๋‚˜ state๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ๋„ ํ˜ธ์ถœ๋จ

  • shouldComponentUpdate: ์ตœ์ ํ™” ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง ํ• ์ง€ ๋ง์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฉ”์„œ๋“œ

  • render

  • getSnapshotBeforeUpdate: ์ปดํฌ๋„ŒํŠธ์— ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚˜๊ธฐ ์ง์ „์˜ DOM ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ. ๊ทธ ๋‹ค์Œ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š” componentDidUpdate ํ•จ์ˆ˜์—์„œ ์ด์ „ ๊ฐ’์„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ

  • componentDidUpdate: ๋ฆฌ๋ Œ๋”๋ง์„ ๋งˆ์น˜๊ณ , ํ™”๋ฉด์— ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ณ€ํ™”๊ฐ€ ๋ชจ๋‘ ๋ฐ˜์˜๋˜๊ณ  ๋‚œ ๋’ค ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ


5. ์–ธ๋งˆ์šดํŠธ

์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ œ๊ฑฐ(์–ธ๋งˆ์šดํŠธ)๋  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • componentWillUnmount: ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์—์„œ ์‚ฌ๋ผ์ง€๊ธฐ ์ง์ „์— ํ˜ธ์ถœ


6. ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ์˜ useEffect() ํ›…

์ง€๊ธˆ๊นŒ์ง€ ์‚ดํŽด๋ณธ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋Š” ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ ๋‹ค๋ฃจ๋Š” ๊ฒƒ๋“ค์ด๋‹ค. ์ด๋Ÿฌํ•œ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋“ค์€ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” useEffect() ํ›…์œผ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์•„๋ž˜์˜ 3๊ฐ€์ง€์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋ฅผ useEffect() ํ›…์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ด๋ฒˆ ์ฑ•ํ„ฐ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•œ๋‹ค.

  • componentDidMount

    useEffect(() => {
      console.log("๋‚˜ ๋งˆ์šดํŠธ ๋˜์—ˆ์–ด!!!");
    }, []);
  • componentDidUpdate

    useEffect(() => {
      console.log("๋‚˜ ๋งˆ์šดํŠธ ๋˜์—ˆ์–ด!!!");
      console.log("๊ทธ๋ฆฌ๊ณ  user๋„ ์—…๋ฐ์ดํŠธ ๋˜๋ฉด ๋˜ ์‹คํ–‰๋˜!!!");
      // user๋Š” ๋ฆฌ๋ Œ๋”๋ง์— ์˜ํ–ฅ์„ ์ฃผ์–ด์•ผ ํ•˜๋Š” ๊ฐ’์ด์–ด์•ผ ํ•œ๋‹ค.
      // ex) state, props
    }, [user]);
  • componentWillUnmount

    useEffect(() => {
      console.log("๋‚˜ ๋งˆ์šดํŠธ ๋˜์—ˆ์–ด!!!");
      return () => {
        console.log("๋‚˜ ์ด์ œ ์–ธ๋งˆ์šดํŠธ ๋ ๊ฑฐ์•ผใ… ใ… ");
      };
    }, []);

7. Conclusion

๋ฆฌ์•กํŠธ๋ฅผ ๋ฐฐ์šฐ๋ฉด์„œ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋ฐฐ์šฐ๊ธฐ ๋ณด๋‹ค๋Š” ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๊ฐ€ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ์ด ๋˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ useEffect() ํ›…์„ ํ†ตํ•ด ์ž์„ธํžˆ ๋ฐฐ์› ๋‹ค. ์–ด๋–ค ๊ฐ•์˜์—์„œ๋„ useEffect() ํ›…์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…์„ ํ•ด์ฃผ๊ณ  ์˜ˆ์‹œ๋„ ๋งŽ์ด ๋“ค์–ด์ฃผ์–ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ  ํ™•์‹คํžˆ ํ”„๋กœ์ ํŠธ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค. ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๋ฉ”์„œ๋“œ๋„ ํ•œ ๋•Œ ๋„ˆ๋ฌด ์ค‘์š”ํ•ด์„œ ๊ผญ ์•Œ์•„์•ผ ํ•˜๋Š” ๊ฐœ๋…์ด์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ง€๊ธˆ React Hooks ์ฒ˜๋Ÿผ ๋ง์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ธ์  ๊ฐ€ React Hooks๋„ ๋‹ค๋ฅธ ํš๊ธฐ์ ์ธ ๋ฌด์–ธ๊ฐ€๋กœ ๋Œ€์ฒด๋˜๋Š” ๋‚ ์ด ์˜ค๊ฒ ์ง€? React๋„...


์ฐธ๊ณ 

25. LifeCycle Method


๐Ÿ“… 2022-07-12

Last updated