Curl Up Black Cat


😎 μ„œλ‘ 

ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ‹€λ³΄λ©΄ μ—¬λŸ¬ κ³³μ—μ„œ 반볡적으둜 λΌμš°νŒ… κ΄€λ ¨ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κ²Œ λ˜λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ React Router 의 useNavigate λ₯Ό ν™œμš©ν•˜μ—¬ 보닀 νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλŠ” custom hook 을 λ§Œλ“€μ–΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

 

import { useNavigate } from 'react-router-dom'

const useAppNavigate = () => {
  const navigate = useNavigate()

  const navigateBack = () => {
    navigate(-1)
  }

  const navigateTo = (path) => {
    navigate(path)
  }

  return { navigateBack, navigateTo }
}

export default useAppNavigate

μ—¬κΈ°μ„œ useAppNavigate λΌλŠ” custom hook 은 두가지 κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

 

1. navigateBack: ν˜„μž¬ νŽ˜μ΄μ§€μ—μ„œ 이전 νŽ˜μ΄μ§€λ‘œ λŒμ•„κ°€λŠ” κΈ°λŠ₯

2. navigateTo: μ›ν•˜λŠ” 경둜둜 μ΄λ™ν•˜λŠ” κΈ°λŠ₯

 

이제 이 custom hook을 μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€ κ°„λž΅ν•˜κ²Œ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

🀠 navigateBack ν™œμš©

λ•Œλ‘  μ‚¬μš©μžμ—κ²Œ 'λ’€λ‘œκ°€κΈ°' κΈ°λŠ₯을 μ œκ³΅ν•˜κ³  싢을 λ•Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ navigateBack ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ κ°„λ‹¨ν•˜κ²Œ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

const { navigateBack } = useAppNavigate();

// 'λ’€λ‘œκ°€κΈ°' λ²„νŠΌμ΄ ν΄λ¦­λ˜μ—ˆμ„ λ•Œ μ‹€ν–‰
<button onClick={navigateBack}>λ’€λ‘œ κ°€κΈ°</button>

 

πŸ₯Έ navigateTo ν™œμš©

νŠΉμ • 경둜둜 μ΄λ™ν•˜κ³ μž ν•  λ•Œ navigateTo ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

const { navigateTo } = useAppNavigate();

// '/profile' 경둜둜 μ΄λ™ν•˜κ³ μž ν•  λ•Œ
<button onClick={() => navigateTo('/profile')}>ν”„λ‘œν•„ 보기</button>

μš”μ•½ν•˜λ©΄ React Router 의 useNavigate λŠ” ꡉμž₯히 μœ μš©ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜μ§€λ§Œ, νŠΉμ •ν•œ μ‚¬μš© 상황에 따라 쑰금 더 ν™•μž₯된 κΈ°λŠ₯이 ν•„μš”ν•  λ•Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 이럴 λ•Œ μœ„μ™€ 같은 custom hook 을 ν™œμš©ν•˜λ©΄ 보닀 νŽΈλ¦¬ν•˜κ²Œ λΌμš°νŒ… 관리λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

πŸ€” μ™œ Custom Hooks 을 λ§Œλ“€μ—ˆλŠ”κ°€?

useNavigate 와 같은 κΈ°λ³Έ Hooks κ°€ μžˆλ‹€λ©΄, μ™œ μΆ”κ°€μ μœΌλ‘œ custom Hooks λ₯Ό λ§Œλ“€μ—ˆλŠ”μ§€ κΆκΈˆν• μ§€λ„ λͺ¨λ¦…λ‹ˆλ‹€. 이에 λŒ€ν•΄μ„œ κ°„λ‹¨ν•˜κ²Œ μ„€λͺ…λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

1. μ½”λ“œ κ°„κ²°ν™”: λ°˜λ³΅λ˜λŠ” λΌμš°νŒ… μ½”λ“œλ₯Ό κ°„λ‹¨ν•˜κ²Œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

2. λͺ…ν™•μ„±: ν•¨μˆ˜μ˜ 이름을 톡해 μš©λ„λ₯Ό λ°”λ‘œ μ•Œ 수 있게 λ©λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄, navigateBack 은 λ°”λ‘œ λ’€λ‘œ κ°€λŠ” κΈ°λŠ₯μž„μ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

3. μœ μ—°μ„±: λ‚˜μ€‘μ— λΌμš°νŒ… κ΄€λ ¨ λ‘œμ§μ„ λ³€κ²½ν•  λ•Œ, ν•œ κ³³μ—μ„œλ§Œ μˆ˜μ •ν•˜λ©΄ λ˜λ―€λ‘œ 관리가 μ‰½μŠ΅λ‹ˆλ‹€.

4. μž¬μ‚¬μš©: μ—¬λŸ¬ μ»΄ν¬λ„ŒνŠΈμ—μ„œ 같은 λ‘œμ§μ„ μ‰½κ²Œ μž¬μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

🀭 결둠

Custom Hooks λŠ” ν”„λ‘œμ νŠΈμ˜ νš¨μœ¨μ„±κ³Ό 가독성을 λ†’μ΄λŠ” 핡심 λ„κ΅¬μž…λ‹ˆλ‹€. 이λ₯Ό 톡해 λ°˜λ³΅λ˜λŠ” μ½”λ“œλ₯Ό 쀄이며, λΌμš°νŒ…κ³Ό 같은 κΈ°λŠ₯을 더 λͺ…ν™•ν•˜κ³  μ§κ΄€μ μœΌλ‘œ ν‘œν˜„ν•  수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μ½”λ“œμ˜ 관리와 μˆ˜μ •μ„ μ‰½κ²Œ ν•˜λ©°, λ‹€λ₯Έ κ°œλ°œμžλ“€μ΄ μ½”λ“œλ₯Ό μ΄ν•΄ν•˜κ³  ν™œμš©ν•˜λŠ” 데에도 큰 도움을 μ€λ‹ˆλ‹€.

+ Recent posts