FrontEnd/React & React-Native

[React] Component Lifecycle

2023. 3. 14. 23:29
728x90
λ°˜μ‘ν˜•

πŸ“ λͺ¨λ“  React Componentμ—λŠ” Lifecycle(수λͺ… μ£ΌκΈ°)이 μ‘΄μž¬ν•©λ‹ˆλ‹€.
Component의 수λͺ…은 νŽ˜μ΄μ§€μ— λ Œλ”λ§λ˜κΈ° μ „ μ€€λΉ„ κ³Όμ •μ—μ„œ μ‹œμž‘ν•˜μ—¬ νŽ˜μ΄μ§€μ—μ„œ μ‚¬λΌμ§ˆ λ•Œ λλ‚©λ‹ˆλ‹€.
라이프 사이클 λ©”μ„œλ“œλŠ” ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

라이프 사이클 λ©”μ„œλ“œμ˜ μ’…λ₯˜λŠ” 총 아홉 κ°€μ§€μž…λ‹ˆλ‹€.
Will 접두사가 뢙은 λ©”μ„œλ“œλŠ” μ–΄λ–€ μž‘μ—…μ„ μž‘λ™ν•˜κΈ° 전에 μ‹€ν–‰λ˜λŠ” λ©”μ„œλ“œμ΄κ³ , Did 접두사가 뢙은 λ©”μ„œλ“œλŠ” μ–΄λ–€ μž‘μ—…μ„ μž‘λ™ν•œ 후에 μ‹€ν–‰λ˜λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€.

라이프 사이클은 총 μ„Έκ°€μ§€, Mount, Update, Unmount 둜 λ‚˜λˆ•λ‹ˆλ‹€.

πŸ“œ Mount

  • DOM이 μƒμ„±λ˜κ³  μ›Ή λΈŒλΌμš°μ €μƒμ— λ‚˜νƒ€λ‚˜λŠ” 것을 마운트(Mount)라고 ν•©λ‹ˆλ‹€.

μ΄λ•Œ ν˜ΈμΆœν•˜λŠ” λ©”μ„œλ“œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • constructor : μ»΄ν¬λ„ŒνŠΈλ₯Ό μƒˆλ‘œ λ§Œλ“€ λ•Œλ§ˆλ‹€ ν˜ΈμΆœλ˜λŠ” 클래슀 μƒμ„±μž λ©”μ„œλ“œ
  • getDerivedStateFromProps : props에 μžˆλŠ” 값을 state에 넣을 λ•Œ μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œ
  • render : μ€€λΉ„ν•œ λ‹€μŒ UIλ₯Ό λ Œλ”λ§ν•˜λŠ” λ©”μ„œλ“œ
  • componentDidMount : μ»΄ν¬λ„ŒνŠΈκ°€ μ›Ή λΈŒλΌμš°μ €μƒμ— λ‚˜νƒ€λ‚œ ν›„ ν˜ΈμΆœν•˜λŠ” λ©”μ„œλ“œ

πŸ“œ Update

μ»΄ν¬λ„ŒνŠΈλŠ” μ•„λž˜ λ„€ κ°€μ§€μ˜ 경우 μ—…λ°μ΄νŠΈ(Update)λ₯Ό ν•©λ‹ˆλ‹€.

  • propsκ°€ λ°”λ€” λ•Œ
  • stateκ°€ λ°”λ€” λ•Œ
  • λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈκ°€ λ¦¬λ Œλ”λ§λ  λ•Œ
  • this.forceUpdates둜 κ°•μ œλ‘œ λ Œλ”λ§μ„ νŠΈλ¦¬κ±°ν•  λ•Œ

μ΄λ ‡κ²Œ μ»΄ν¬λ„ŒνŠΈλ₯Ό μ—…λ°μ΄νŠΈν•  λ•ŒλŠ” λ‹€μŒ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

  • getDerivedStateFromProps : 이 λ©”μ„œλ“œλŠ” 마운트 κ³Όμ •μ—μ„œλ„ 호좜되며, μ—…λ°μ΄νŠΈκ°€ μ‹œμž‘ν•˜κΈ° 전에도 ν˜ΈμΆœλ©λ‹ˆλ‹€. props의 변화에 따라 state 값에도 λ³€ν™”λ₯Ό μ£Όκ³  싢을 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
  • shouldComponentUpdated : μ»΄ν¬λ„ŒνŠΈκ°€ λ¦¬λ Œλ”λ§μ„ ν•΄μ•Ό ν• μ§€ 말아야 ν• μ§€λ₯Ό κ²°μ •ν•˜λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€. 이 λ©”μ„œλ“œμ—μ„œλŠ” true ν˜Ήμ€ false 값을 λ°˜ν™˜ν•΄μ•Ό ν•˜λ©°, trueλ₯Ό λ°˜ν™˜ν•˜λ©΄ λ‹€μŒ 라이프사이클 λ©”μ„œλ“œλ₯Ό 계속 μ‹€ν–‰ν•˜κ³ , falseλ₯Ό λ°˜ν™˜ν•˜λ©΄ μž‘μ—…μ„ μ€‘μ§€ν•©λ‹ˆλ‹€. 즉, μ»΄ν¬λ„ŒνŠΈκ°€ λ¦¬λ Œλ”λ§ λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • render : μ»΄ν¬λ„ŒνŠΈλ₯Ό λ¦¬λ Œλ”λ§ν•©λ‹ˆλ‹€.
  • getSnapshotBeforeUpdate : μ»΄ν¬λ„ŒνŠΈ λ³€ν™”λ₯Ό DOM에 λ°˜μ˜ν•˜κΈ° λ°”λ‘œ 직전에 ν˜ΈμΆœν•˜λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€.
  • componenetDidUpdate : μ»΄ν¬λ„ŒνŠΈμ˜ μ—…λ°μ΄νŠΈ μž‘μ—…μ΄ λλ‚œ ν›„ ν˜ΈμΆœν•˜λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€.

πŸ“œ Unmount

마운트의 λ°˜λŒ€ κ³Όμ •, 즉 μ»΄ν¬λ„ŒνŠΈλ₯Ό DOMμ—μ„œ μ œκ±°ν•˜λŠ” 것을 μ–Έλ§ˆμš΄νŠΈ(Unmount)라고 ν•©λ‹ˆλ‹€.

  • componentWillUnmount : μ»΄ν¬λ„ŒνŠΈκ°€ μ›Ή λΈŒλΌμš°μ €μƒμ—μ„œ 사라지기 전에 ν˜ΈμΆœν•˜λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€.
728x90
λ°˜μ‘ν˜•
  1. πŸ“œ Mount
  2. πŸ“œ Update
  3. πŸ“œ Unmount
'FrontEnd/React & React-Native' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [React] Hooks : useEffect( )
  • [React] Hooks : useState( )
  • [React] Ref
  • [React] State
devwoodie
devwoodie
κ°œλ°œν•˜μž(DevHaja)devwoodie λ‹˜μ˜ λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
devwoodie
κ°œλ°œν•˜μž(DevHaja)
devwoodie
전체
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (43)
    • FrontEnd (34)
      • React & React-Native (13)
      • JavaScript & TypeScript (8)
      • CSS (10)
      • HTML (3)
    • Dev knowledge (5)
    • Offline Conference (2)
    • Memoir (1)

λΈ”λ‘œκ·Έ 메뉴

  • HOME
  • GITHUB
  • VELOG
  • TAG

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

hELLO Β· Designed By μ •μƒμš°.
devwoodie
[React] Component Lifecycle
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

κ°œμΈμ •λ³΄

  • ν‹°μŠ€ν† λ¦¬ ν™ˆ
  • 포럼
  • 둜그인

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.