자주 쓰는 custom hook 정리
내가 자주 사용하는 custom hook을 정리해보자.
⭐ useParameter
단계별로 테이브을 다루고 있는데, 이 때 사용자 편의성을 위해 히스토리를 유지하면서 상태를 반영해야 하는 경우가 자주 발생한다.
이를 위해 아래와 같은 커스텀 훅을 만들었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"use client"
import { useRouter, useSearchParams } from "next/navigation"
export function useParameter() {
const router = useRouter()
const searchParams = useSearchParams()
// GET
const getParameter = (key: string): string | null => {
return searchParams.get(key)
}
// SET
const setParameter = (key: string, value: string | null) => {
const params = new URLSearchParams(searchParams.toString())
if (value === null) {
params.delete(key)
} else {
params.set(key, value)
}
router.push(`?${params.toString()}`)
}
return {
getParameter,
setParameter,
}
}
⚙️ 훅의 동작 방식
- getParameter
- 현재 URL의 query string에서 특정 key의 값을 조회한다.
- 값이 없을 경우 null을 반환한다.
- setParameter
- 기존 query parameter를 유지한 채, 특정 key의 값을 추가·수정·삭제한다.
- router.push를 사용하기 때문에 브라우저 히스토리가 남는다.
- value가 null인 경우 해당 parameter를 URL에서 제거한다.
This post is licensed under CC BY 4.0 by the author.