Front-End/React

React] Mount & Rerender (LifeSycle)

์™•๊ฐ€๐Ÿ‘ 2023. 6. 20. 10:20
728x90
๋ฐ˜์‘ํ˜•

React๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ, ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€๋Š” ๋™์ž‘ ์ˆœ์„œ์™€ ํ™”๋ฉด์„ ๋‹ค์‹œ ๊ทธ๋ฆฌ๊ฒŒ ๋˜๋Š” ๋ฆฌ๋ Œ๋”๋ง ์ˆœ์„œ์ž…๋‹ˆ๋‹ค.

 

 


 

 

Mount (๋งˆ์šดํŠธ)

์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ๋ Œ๋”๋ง ๋˜๋Š” ๊ณผ์ •์„ ๋งˆ์šดํŠธ๋ผ๊ณ  ํ•˜๋ฉฐ,

๋ Œ๋”๋ง ๋œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‚ญ์ œ๋˜๋Š” ๊ณผ์ •์„  Unmount(์–ธ๋งˆ์šดํŠธ)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

  1. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ํ˜ธ์ถœ
  2. ๊ตฌํ˜„๋ถ€ ์‹คํ–‰
    • props ์ „๋‹ฌ๋ฐ›๊ณ , hook ๋‚ด๋ถ€ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ์ƒ์„ฑ.
      (๋‚ด๋ถ€ ๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜๋Š” hook์— ์žˆ๋Š” state๋‚˜ function์„ ์ œ์™ธ. ์ด๋“ค์€ ๋ณ„๋„๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด ๊ด€๋ฆฌํ•จ.)
  3. ๊ฐ€์ƒ DOM์„
    • ์ƒ์„ฑ
  4. ์ปค๋ฐ‹
    • ์‹ค์ œ DOM์— ๋ฐ˜์˜
  5. useLayoutEffect
    • ํ™”๋ฉด์— Paint ํ•˜๊ธฐ ์ „์—, useLayoutEffect์— ๋“ฑ๋กํ•ด ๋‘” effect '๋™๊ธฐ'๋กœ ์‹คํ–‰๋œ๋‹ค.
    • ์‹ค์ œ๋กœ ํ•ด๋‹น ํ›…์€ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Œ.
    • ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜๋ฉด ์„ฑ๋Šฅ์ €ํ•˜์ด์Šˆ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, useEffect๋ฅผ ๊ถŒ์žฅ
  6. state, redux store ๋“ฑ์˜ ๋ณ€๊ฒฝ์ด ์žˆ๋‹ค๋ฉด ํ•œ๋ฒˆ ๋” ๋ฆฌ๋ Œ๋”๋ง ๋œ๋‹ค.
  7. Paint
    • ์‹ค์ œ DOM์„ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋ฉฐ ๋งˆ์šดํŠธ ์™„๋ฃŒ(didMount).
  8. useEffect
    • ๋งˆ์šดํŠธ ๋˜์–ด ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€์ž๋งˆ์ž, useEffect์— ๋“ฑ๋กํ•ด ๋‘” ๋‚ด์šฉ๋“ค์ด '๋น„๋™๊ธฐ'๋กœ ์‹คํ–‰

 

 


 

 

Rerender (๋ฆฌ๋ Œ๋”)

state๊ฐ’์ด ๋ณ€ํ•˜์—ฌ ํ™”๋ฉด์ด ๋‹ค์‹œ ๊ทธ๋ ค์ง€๊ฒŒ ๋˜๋Š” ๊ฒƒ์„ ๋ฆฌ๋ Œ๋”๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

  1. ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ์žฌํ˜ธ์ถœ
  2. ๊ตฌํ˜„๋ถ€ ์‹คํ–‰
    • props ์ „๋‹ฌ๋ฐ›๊ณ , hook ๋‚ด๋ถ€ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ์žฌ์ƒ์„ฑ. (hook์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ๊ธฐ์กด์— ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ ๊ฐ’์„ ์ ์ ˆํžˆ ํ™œ์šฉ)
  3. ๋ Œ๋”๋ง
    • ์ƒˆ๋กœ์šด ๊ฐ€์ƒDOM์„ ๋” ์ƒ์„ฑ ํ›„, ์ด์ „ ๊ฐ€์ƒ DOM๊ณผ ๋น„๊ตํ•˜์—ฌ, ๋‹ฌ๋ผ์ง„ ๋ถ€๋ถ„์„ ํƒ์ƒ‰ํ•˜๊ณ , ์‹ค์ œ DOM์— ๋ฐ˜์˜ํ•  ๋ถ€๋ถ„์„ ๊ฒฐ์ •
  4. ์ปค๋ฐ‹
    • ๋‹ฌ๋ผ์ง„ ๋ถ€๋ถ„๋งŒ ์‹ค์ œ DOM์— ๋ฐ˜์˜
  5. useLayoutEffect
    • ๋งˆ์šดํŠธ์™€ ๊ฐ™์Œ
  6. state, redux store ๋“ฑ์˜ ๋ณ€๊ฒฝ์ด ์žˆ๋‹ค๋ฉด ํ•œ๋ฒˆ ๋” ๋ฆฌ๋ Œ๋”๋ง ๋œ๋‹ค.
  7. Paint
    • ์‹ค์ œ DOM์„ ํ™”๋ฉด์— ๊ทธ๋ฆผ. ์—…๋ฐ์ดํŠธ ์™„๋ฃŒ(didUpdate).
  8. useEffect
    • ์˜์กด์„ฑ ํ™•์ธ ํ›„, ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ‘๋น„๋™๊ธฐ’๋กœ ์‹คํ–‰

 

Rerender ์กฐ๊ฑด

  • state๊ฐ’ ๋ณ€๊ฒฝ
  • props ๋ณ€๊ฒฝ
  • redux store ๋ณ€๊ฒฝ
  • ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง ๋˜์–ด ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊นŒ์ง€ ๋ฆฌ๋ Œ๋”๋ง

 

Rerender๋ฅผ ๋ง‰๋Š” ๋ฐฉ๋ฒ•

  • ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋–„๋ฌธ์— ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง์„ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ๋Š” React.memo๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ง‰์œผ๋ ค๋ฉด useMemo, ํ•จ์ˆ˜๋ฅผ ๋ง‰์œผ๋ ค๋ฉด useCallback ์‚ฌ์šฉ ํ›„ ์˜์กด์„ฑ์„ ๋ถ€์—ฌํ•˜์—ฌ Rerender ์กฐ๊ฑด์„ ๋ถ€์—ฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 


 

 

 

 


 

 

๋™์ž‘ ์›๋ฆฌ๋Š” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์—†๊ณ , ๋””๋ฒ„๊น… ๋˜ํ•œ ์ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
728x90

'Front-End > React' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

React] Hook : useRef  (0) 2023.06.20
React] Strict Mode  (0) 2023.06.20
React] Hook : useEffect  (0) 2023.06.20
React] Hook  (0) 2023.06.20
React] Hook : useState  (1) 2023.06.06