
π μλ‘
νλ‘μ νΈλ₯Ό μ§ννλ€λ³΄λ©΄ μ¬λ¬ κ³³μμ λ°λ³΅μ μΌλ‘ λΌμ°ν κ΄λ ¨ κΈ°λ₯μ ꡬννκ² λλ κ²½μ°κ° λ§μ΅λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ 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 λ νλ‘μ νΈμ ν¨μ¨μ±κ³Ό κ°λ μ±μ λμ΄λ ν΅μ¬ λꡬμ λλ€. μ΄λ₯Ό ν΅ν΄ λ°λ³΅λλ μ½λλ₯Ό μ€μ΄λ©°, λΌμ°ν κ³Ό κ°μ κΈ°λ₯μ λ λͺ ννκ³ μ§κ΄μ μΌλ‘ ννν μ μκ² λμμ΅λλ€. μ΄λ μ½λμ κ΄λ¦¬μ μμ μ μ½κ² νλ©°, λ€λ₯Έ κ°λ°μλ€μ΄ μ½λλ₯Ό μ΄ν΄νκ³ νμ©νλ λ°μλ ν° λμμ μ€λλ€.
'π» νλ‘κ·Έλλ° > π React' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
React Hook Form μμ useRef μ¬μ©νκΈ° (0) | 2023.09.17 |
---|---|
λμ λΌμ°ν μ¬μ© νμ΄μ§ λͺ¨λ κ΄λ¦¬ (0) | 2023.08.20 |
리μ‘νΈ μ¬μ©μ μ΄ν΄ (0) | 2022.11.18 |
React νλ‘μ νΈμ sass μ°κ²°μ Node Sass version 6.0.1 is incompatible with ^4.0.0 || ^5.0.0. μλ¬ ν΄κ²° (0) | 2021.07.18 |
React Router, a νκ·Έ (0) | 2021.07.17 |