[TECH-QA] ν›…μœΌλ‘œ 뢄리할 μ΄μœ κ°€ μžˆμ„κΉŒ?

μ»€μŠ€ν…€ ν›…(Custom Hook)으둜 λΆ„λ¦¬ν•œλ‹€λŠ” 것은 μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ˜ μƒνƒœ 관리(useState), λΆ€μˆ˜ 효과(useEffect), λ˜λŠ” 기타 λ‘œμ§μ„ λ³„λ„μ˜ ν•¨μˆ˜(μ»€μŠ€ν…€ ν›…)둜 μΆ”μΆœν•΄ μ»΄ν¬λ„ŒνŠΈμ™€ λ…λ¦½μ μœΌλ‘œ κ΄€λ¦¬ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. μ»€μŠ€ν…€ 훅은 React의 ν›…(useState, useEffect λ“±)을 μ‚¬μš©ν•˜λ©°, 일반적으둜 use둜 μ‹œμž‘ν•˜λŠ” 이름을 κ°€μ§‘λ‹ˆλ‹€.

가독성과 μœ μ§€λ³΄μˆ˜μ„±

UI λ Œλ”λ§κ³Ό κΈ°λŠ₯ λ‘œμ§μ„ λΆ„λ¦¬ν•˜μ—¬ 가독성과 μœ μ§€λ³΄μˆ˜ ν–₯상

  • μ»΄ν¬λ„ŒνŠΈ 내뢀에 μƒνƒœ 관리와 UI λ Œλ”λ§ 둜직이 μ„žμ—¬ 있으면 μ½”λ“œκ°€ λ³΅μž‘ν•΄μ§€κ³  읽기 μ–΄λ €μ›Œμ§‘λ‹ˆλ‹€.
  • ν›…μœΌλ‘œ λ‘œμ§μ„ λΆ„λ¦¬ν•˜λ©΄ μ»΄ν¬λ„ŒνŠΈλŠ” JSX와 UI λ Œλ”λ§μ— μ§‘μ€‘ν•˜κ³ , λ‘œμ§μ€ λ³„λ„λ‘œ κ΄€λ¦¬λ˜μ–΄ 가독성이 ν–₯μƒλ©λ‹ˆλ‹€.

μž¬μ‚¬μš©μ„±

λ™μΌν•œ λ‘œμ§μ„ μ—¬λŸ¬ μ»΄ν¬λ„ŒνŠΈμ—μ„œ μ‚¬μš©ν•  λ•Œ

  • λ™μΌν•œ λ‘œμ§μ„ μ—¬λŸ¬ μ»΄ν¬λ„ŒνŠΈμ—μ„œ μ‚¬μš©ν•  λ•Œ, ν›…μœΌλ‘œ λΆ„λ¦¬ν•˜λ©΄ 쀑볡 μ½”λ“œλ₯Ό 쀄이고 일관성을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 비둝 ν˜„μž¬ μž¬μ‚¬μš©ν•˜μ§€ μ•Šλ”λΌλ„, λ‚˜μ€‘μ— ν•„μš”ν•  κ°€λŠ₯성을 λŒ€λΉ„ν•΄ λΆ„λ¦¬ν•˜λŠ” 것이 μœ λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈ μš©μ΄μ„±

UIλ Œλ”λ§κ³Ό κΈ°λŠ₯ λ‘œμ§μ€ λΆ„λ¦¬ν•˜μ—¬ λ…λ¦½μ μœΌλ‘œ 검증 κ°€λŠ₯

  • 훅은 μ»΄ν¬λ„ŒνŠΈμ™€ λ…λ¦½μ μœΌλ‘œ ν…ŒμŠ€νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€. UIλ₯Ό λ Œλ”λ§ν•˜μ§€ μ•Šκ³  둜직만 검증 κ°€λŠ₯.
  • 예: useCounter 훅을 ν…ŒμŠ€νŠΈν•  λ•Œ, 카운트 증가와 타이머 λ™μž‘μ„ λ³„λ„λ‘œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

κΈ°λŠ₯ λ³„λ‘œ 뢄리

μƒνƒœ 관리

데이터 fetching

이벀트 처리

μΊ‘μŠν™”

  • μƒνƒœ 관리, 데이터 fetching, 이벀트 처리 λ“± νŠΉμ • κΈ°λŠ₯(관심사)을 ν›…μœΌλ‘œ μΊ‘μŠν™”ν•΄ μ»΄ν¬λ„ŒνŠΈμ˜ μ±…μž„μ„ μ€„μž…λ‹ˆλ‹€.
  • μ΄λŠ” μ½”λ“œμ˜ λͺ¨λ“ˆν™”와 μœ μ§€λ³΄μˆ˜μ„±μ„ λ†’μž…λ‹ˆλ‹€.

λ³΅μž‘ν•œ 둜직 관리

λ‘œμ§μ„ μ²΄κ³„μ μœΌλ‘œ ꡬ쑰화

  • 둜직이 λ³΅μž‘ν• μˆ˜λ‘(예: μ—¬λŸ¬ useState, useEffect μ‘°ν•©) μ»΄ν¬λ„ŒνŠΈ 내뢀에 두면 관리가 μ–΄λ ΅μŠ΅λ‹ˆλ‹€. ν›…μœΌλ‘œ λΆ„λ¦¬ν•˜λ©΄ λ‘œμ§μ„ μ²΄κ³„μ μœΌλ‘œ ꡬ쑰화할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ–Έμ œ ν›…μœΌλ‘œ 뢄리해야 ν•˜λ‚˜?

  • 둜직이 λ³΅μž‘ν•˜κ±°λ‚˜ μ—¬λŸ¬ μ€„μ˜ μ½”λ“œλ₯Ό μ°¨μ§€ν•  λ•Œ(예: useEffect와 useStateκ°€ μ‘°ν•©λœ 경우).
  • 가독성을 높이고 μ»΄ν¬λ„ŒνŠΈλ₯Ό κ°„κ²°ν•˜κ²Œ μœ μ§€ν•˜κ³  싢을 λ•Œ.
  • ν…ŒμŠ€νŠΈλ₯Ό λ…λ¦½μ μœΌλ‘œ μˆ˜ν–‰ν•˜κ³  싢을 λ•Œ.
  • ν˜„μž¬ λ˜λŠ” λ―Έλž˜μ— λ‘œμ§μ„ μž¬μ‚¬μš©ν•  κ°€λŠ₯성이 μžˆμ„ λ•Œ.
  • 예) 데이터 fetching, 폼 관리, 타이머, μ• λ‹ˆλ©”μ΄μ…˜ λ“±.

λΆ„λ¦¬ν•˜μ§€ μ•Šμ•„λ„ λ˜λŠ” 경우?

  • 둜직이 맀우 λ‹¨μˆœν•  λ•Œ(예: 단일 useState둜 μΆ©λΆ„ν•œ 경우).
  • 둜직이 νŠΉμ • μ»΄ν¬λ„ŒνŠΈμ— κ°•ν•˜κ²Œ 의쑴적이고 μž¬μ‚¬μš© κ°€λŠ₯성이 μ „ν˜€ 없을 λ•Œ.
  • μΆ”κ°€ νŒŒμΌμ„ λ§Œλ“œλŠ” μ˜€λ²„ν—€λ“œκ°€ 둜직의 λ³΅μž‘λ„μ— λΉ„ν•΄ 클 λ•Œ.
  • 예) const [isOpen, setIsOpen] = useState(false); 같은 λ‹¨μˆœν•œ μƒνƒœ 관리.