πŸ”Functional Component Lifecycle

#️⃣Functional Component Lifecycle

πŸ’‘ 이전 클래슀 μ»΄ν¬λ„ŒνŠΈμ™€ λΉ„κ΅ν•˜μ—¬ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ 라이프 사이클 λ©”μ„œλ“œλ‘œ μ‚¬μš©λ˜μ—ˆλ˜ constructor(), render(), ComponenDidMount(), componentDidUpdate(), componentWillUnmount()λŠ” μ•„λž˜μ™€ 같이 μ‚¬μš©ν•œλ‹€.

[μ°Έκ³ ] ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ™€ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ 비ꡐ

λΆ„λ₯˜
ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈ
ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈ

Mounting

constructor()

ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€

Mounting

render()

return()

Mounting

ComponenDidMount()

useEffect()

Updating

componentDidUpdate()

useEffect()

UnMounting

componentWillUnmount()

useEffect()


useEffect() λ₯Ό μ‚¬μš©ν•˜μ—¬ 클래슀 μ»΄ν¬λ„ŒνŠΈ 라이프 μ‚¬μ΄ν΄μ²˜λŸΌ κ΅¬ν˜„ν•˜κΈ°

useEffect()

λ¦¬μ•‘νŠΈ μ»΄ν¬λ„ŒνŠΈκ°€ λ Œλ”λ§ 될 λ•Œλ§ˆλ‹€ νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ„λ‘ μ„€μ •ν•  수 μžˆλŠ” Hook

useEffect(() => { },[]);

useEffect(() => { 
  // first: useEffectκ°€ 싀행될 λ•Œ μˆ˜ν–‰ν•  μž‘μ—…
  // (데이터 κ°€μ Έμ˜€κΈ°, ꡬ독 μ„€μ • λ“±)
  // componentDidMount :첫 λ Œλ”λ§ ν›„ μ‹€ν–‰
  // componentDidUpdate :λ¦¬λ Œλ”λ§μ„ μ™„λ£Œν•œ ν›„ μ‹€ν–‰

  return () => {
    // second: μ»΄ν¬λ„ŒνŠΈκ°€ unmount될 λ•Œ μ‹€ν–‰ν•  μž‘μ—…
    // (ꡬ독 ν•΄μ œ, 정리 μž‘μ—… λ“±)
    // componentWillUnmount
  }
}, [third])
  • first : 첫 번째 λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬λœ ν•¨μˆ˜ μ»΄ν¬λ„ŒνŠΈκ°€ λ Œλ”λ§λ  λ•Œλ§ˆλ‹€ μ‹€ν–‰λœλ‹€. 이 ν•¨μˆ˜λŠ” λΆ€μˆ˜ 효과λ₯Ό μ²˜λ¦¬ν•˜κ³ , λ Œλ”λ§ 결과에 영ν–₯을 μ£Όμ§€ μ•Šμ•„μ•Ό ν•œλ‹€.

  • returnλ¬Έ μ•ˆμ— μžˆλŠ” ν•¨μˆ˜ μ»΄ν¬λ„ŒνŠΈκ°€ unmount될 λ•Œ μ‹€ν–‰λœλ‹€. 이것은 주둜 useEffectμ—μ„œ μˆ˜ν–‰ν•œ μž‘μ—…λ“€μ„ μ •λ¦¬ν•˜κ³ , λ©”λͺ¨λ¦¬ λˆ„μˆ˜λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€.

  • [third]: μ˜μ‘΄μ„± λ°°μ—΄ useEffectκ°€ μ˜μ‘΄ν•˜λŠ” 값듀을 λ°°μ—΄λ‘œ λ°›λŠ”λ‹€. 이 λ°°μ—΄ μ•ˆμ˜ 값이 변경될 λ•Œλ§ˆλ‹€ λ‹€μ‹œ μ‹€ν–‰λœλ‹€. λ§Œμ•½ [third] λŒ€μ‹  []λ₯Ό μ „λ‹¬ν•˜λ©΄, useEffectλŠ” μ»΄ν¬λ„ŒνŠΈκ°€ 처음 λ Œλ”λ§λ  λ•Œλ§Œ μ‹€ν–‰λœλ‹€.


ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλ₯Ό μ„ ν˜Έν•˜λŠ” 이유

μ΄μ „μ—λŠ” ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλ§Œ μƒνƒœμ™€ 라이프사이클을 λ‹€λ£° 수 μžˆμ—ˆμœΌλ©° ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλŠ” λ‹¨μˆœνžˆ ν•¨μˆ˜λ‘œ μ •μ˜λ˜μ–΄ μžˆμ–΄ μ œν•œμ μ΄μ—ˆλ‹€. React Hooks의 λ“±μž₯으둜 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈκ°€ μƒνƒœμ™€ 라이프사이클을 효과적으둜 λ‹€λ£° 수 있게 λ˜μ—ˆλ‹€. 이둜써 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλŠ” μ½”λ“œκ°€ 더 κ°„κ²°ν•˜κ³  λͺ…ν™•ν•΄μ‘Œλ‹€.

React Hooksλ₯Ό μ‚¬μš©ν•˜λ©΄ *μƒνƒœ 관리와 라이프사이클 μ²˜λ¦¬μ— λŒ€ν•œ μ ‘κ·Ό 방식이 ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ™€λŠ” 달라진닀. μ΄λŠ” μ½”λ“œμ˜ 일관성과 μœ μ—°μ„±μ„ 높인닀.

ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ™€ React Hooksλ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄μ„œ κ°œλ°œμžλŠ” 더 직관적이고 κ°„λ‹¨ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 있게 λ˜μ—ˆκ³ , μ΄λŸ¬ν•œ 이점으둜 인해 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈκ°€ ν˜„μž¬ React μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ—μ„œ 더 많이 μ„ ν˜Έλ˜λŠ” κ²½ν–₯이 μžˆλ‹€.

*μƒνƒœ 관리와 라이프사이클 μ²˜λ¦¬μ— λŒ€ν•œ μ ‘κ·Ό 방식

- ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈ setStateλ₯Ό μ‚¬μš©ν•˜μ—¬ μƒνƒœλ₯Ό λ³€κ²½ν•˜κ³  라이프 사이클 λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 비동기 μž‘μ—… 처리

- ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈ useState, useEffect λ“±μ˜ Hook ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ½”λ“œκ°€ κ°„κ²°ν•˜κ³  더 λ§Žμ€ μœ μ—°μ„±μ„ 제곡

  1. κ°„κ²°μ„±κ³Ό 가독성 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλŠ” 일반적으둜 훨씬 더 κ°„κ²°ν•˜κ³  가독성이 λ†’λ‹€. ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” μƒμ„±μž, 라이프사이클 λ©”μ„œλ“œ, this ν‚€μ›Œλ“œ 등을 μ‚¬μš©ν•΄μ•Ό ν•˜μ§€λ§Œ, ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” μ΄λŸ¬ν•œ 것듀이 ν•„μš”ν•˜μ§€ μ•Šλ‹€.

  2. 라이프사이클 κ΄€λ¦¬μ˜ λ‹¨μˆœν™” ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” React Hooksλ₯Ό μ‚¬μš©ν•˜μ—¬ μƒνƒœμ™€ 라이프사이클 이벀트λ₯Ό 관리할 수 μžˆλ‹€. μ΄λŠ” ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ λ³΅μž‘ν•œ 라이프사이클 λ©”μ„œλ“œλ³΄λ‹€ 훨씬 직관적이고 κ°„λ‹¨ν•˜λ‹€.

  3. μž¬μ‚¬μš©μ„±κ³Ό ν…ŒμŠ€νŠΈ μš©μ΄μ„± ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλŠ” 순수 ν•¨μˆ˜μ˜ νŠΉμ„±μ„ κ°€μ§€κ³  μžˆμ–΄μ„œ ν…ŒμŠ€νŠΈν•˜κΈ°κ°€ 더 쉽닀. λ˜ν•œ, ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλŠ” 더 μž‘κ³  λ‹¨μˆœν•œ λ‹¨μœ„λ‘œ λ‚˜λˆ„κΈ°κ°€ 더 μ‰¬μ›Œμ„œ, μž¬μ‚¬μš©μ„±μ΄ λ†’μ•„μ§„λ‹€.

μš”μ•½

ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλŠ” React Hooksλ₯Ό ν™œμš©ν•˜μ—¬ μƒνƒœ 관리와 라이프사이클을 λ‹€λ£¨λ©΄μ„œ μ½”λ“œμ˜ κ°„κ²°μ„±κ³Ό μœ μ—°μ„±μ΄ ν–₯μƒλ˜μ—ˆλ‹€. μ΄λŸ¬ν•œ 이점으둜 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈκ°€ 더 λ§Žμ€ μ„ ν˜Έλ₯Ό λ°›κ³  μžˆλ‹€.


μ°Έκ³  μ‚¬μ΄νŠΈ

[React] ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈ 생λͺ…μ£ΌκΈ°(lifecycle) μ΄ν•΄ν•˜κΈ°

[React] μ»΄ν¬λ„ŒνŠΈ 생λͺ…μ£ΌκΈ° / ν΄λž˜μŠ€ν˜• , ν•¨μˆ˜ν˜•LifeCycle

Last updated