Effect Hook

Effect Hook

Tags
Frontend
React
Published
Author

useEffect

useEffectλŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό μ™ΈλΆ€ μ‹œμŠ€ν…œκ³Ό 동기화할 수 μžˆλŠ” React ν›…μž…λ‹ˆλ‹€.

useEffect(setup, dependencies?)

λ§€κ°œλ³€μˆ˜
  • setup
    • Effect 둜직이 ν¬ν•¨λœ ν•¨μˆ˜μž…λ‹ˆλ‹€. μ…‹μ—… ν•¨μˆ˜λŠ” μ„ νƒμ μœΌλ‘œ 클린업 ν•¨μˆ˜λ₯Ό λ°˜ν™˜ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
    • μ˜μ‘΄μ„±μ΄ λ³€κ²½λ˜μ–΄ λ‹€μ‹œ λ Œλ”λ§ν•  λ•Œλ§ˆλ‹€ ReactλŠ” λ¨Όμ € 이전 κ°’μœΌλ‘œ 클린업 ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œ λ‹€μŒ, μƒˆ κ°’μœΌλ‘œ μ…‹μ—… ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
  • optional dependencies : setup μ½”λ“œ λ‚΄μ—μ„œ 참쑰된 λͺ¨λ“  λ°˜μ‘ν˜• κ°’μ˜ λͺ©λ‘μž…λ‹ˆλ‹€. λ°˜μ‘ν˜• 값은 props, state, μ»΄ν¬λ„ŒνŠΈ λ³Έλ¬Έ λ‚΄λΆ€μ—μ„œ 직접 μ„ μ–Έν•œ λͺ¨λ“  λ³€μˆ˜μ™€ ν•¨μˆ˜λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

useEffectμ—λŠ” 두 개의 인자λ₯Ό 전달해야 ν•©λ‹ˆλ‹€.

  1. ν•΄λ‹Ή μ‹œμŠ€ν…œμ— μ—°κ²°ν•˜λŠ” μ…‹μ—… μ½”λ“œκ°€ ν¬ν•¨λœ μ…‹μ—… ν•¨μˆ˜
  1. ν•΄λ‹Ή ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ‚¬μš©λ˜λŠ” μ»΄ν¬λ„ŒνŠΈμ˜ λͺ¨λ“  값을 ν¬ν•¨ν•œ μ˜μ‘΄μ„± λͺ©λ‘

ReactλŠ” ν•„μš”ν•  λ•Œλ§ˆλ‹€ μ…‹μ—… 및 클린업 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ”λ°, μ΄λŠ” μ—¬λŸ¬ 번 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  1. μ»΄ν¬λ„ŒνŠΈκ°€ νŽ˜μ΄μ§€μ— 좔가될 λ•Œ(마운트)λ§ˆλ‹€ μ…‹μ—… μ½”λ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
  1. μ˜μ‘΄μ„±μ΄ λ³€κ²½λœ μ»΄ν¬λ„ŒνŠΈλ₯Ό λ‹€μ‹œ λ Œλ”λ§ν•  λ•Œλ§ˆλ‹€.
  1. μ»΄ν¬λ„ŒνŠΈκ°€ νŽ˜μ΄μ§€μ— 제거되면 (마운트 ν•΄μ œ) λ§ˆμ§€λ§‰μœΌλ‘œ ν•œ 번 클린업 μ½”λ“œλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

Effectμ—μ„œ 데이터 νŽ˜μΉ­ν•˜λŠ” 것을 λŒ€μ²΄ν•  쒋은 λŒ€μ•ˆμ€ λ¬΄μ—‡μΈκ°€μš”?

Effect 내뢀에 fetchλ₯Ό μž‘μ„±ν•˜λŠ”κ²ƒμ€ 데이터λ₯Ό νŽ˜μΉ˜ν•˜λŠ” μΈκΈ°μžˆλŠ” λ°©λ²•μœΌλ‘œ, μ™„μ „ν•œ client-side μ•±μ—μ„œ 특히 κ·Έλ ‡μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ΄λŠ” 맀우 μˆ˜λ™μ μΈ μ ‘κ·Ό 방식이며 μƒλ‹Ήν•œ 단점이 μžˆμŠ΅λ‹ˆλ‹€.
  • EffectλŠ” μ„œλ²„μ—μ„œ μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€.
  • Effectμ—μ„œ 직접 νŽ˜μΉ­ν•˜λ©΄ β€œλ„€νŠΈμ›Œν¬ μ›Œν„°ν’€β€μ„ λ§Œλ“€κΈ° 쉽닀.
  • Effectμ—μ„œ 직접 νŽ˜μΉ­ν•œλ‹€λŠ”κ²ƒμ€ 일반적으둜 데이터λ₯Ό 미리 λ‘œλ“œν•˜κ±°λ‚˜ μΊμ‹œν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.

useLayoutEffect

useLayoutEffectλŠ” λΈŒλΌμš°μ €κ°€ 화면을 λ‹€μ‹œ μ±„μš°κΈ° 전에 μ‹€ν–‰λ˜λŠ” λ²„μ „μ˜ useEffectμž…λ‹ˆλ‹€.

useLayoutEffect(setup, dependencies?)

λ§€κ°œλ³€μˆ˜
  • setup
    • Effect의 둜직이 ν¬ν•¨λœ ν•¨μˆ˜μž…λ‹ˆλ‹€.
    • λ³€κ²½λœ μ˜μ‘΄μ„±μœΌλ‘œ λ‹€μ‹œ λ Œλ”λ§ν•  λ•Œλ§ˆλ‹€ ReactλŠ” (클린업 ν•¨μˆ˜λ₯Ό μ •μ˜ν•œ 경우) λ¨Όμ € 이전 κ°’μœΌλ‘œ 클린업 ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œ λ‹€μŒ, μƒˆ κ°’μœΌλ‘œ μ…‹μ—… ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
  • optional dependencies
    • setup μ½”λ“œ λ‚΄μ—μ„œ 참쑰된 λͺ¨λ“  λ°˜μ‘ν˜• κ°’μ˜ λͺ©λ‘μž…λ‹ˆλ‹€.
    • λ°˜μ‘ν˜• κ°’μ—λŠ” props, state, μ»΄ν¬λ„ŒνŠΈ λ³Έλ¬Έ λ‚΄λΆ€μ—μ„œ 직접 μ„ μ–Έλœ λͺ¨λ“  λ³€μˆ˜μ™€ ν•¨μˆ˜κ°€ ν¬ν•¨λ©λ‹ˆλ‹€.

useInsertionEffect

Β 
Β 
Β