주소에 넣을 값은 “정체성”과 “보기 조건”으로 나눈다

URL은 화면 상태의 복원 계약이다. 값이 바뀌었을 때 다른 리소스가 되는지부터 묻는다.

/products/42?tab=reviews&sort=recent
PARAM

리소스의 정체성

값이 없거나 바뀌면 다른 상세 페이지가 된다.

const { id } = useParams()
검증 결과 · 유효 ID면 fetch key, 없으면 404
QUERY

같은 리소스의 보기 조건

필터·정렬·페이지처럼 목록의 표현만 바꾼다.

search.get('sort') ?? 'popular'
검증 결과 · 허용값만 사용하고 나머지는 기본값
1 · 읽기params / search 2 · 검증타입 · 허용값 3 · 렌더요청 키 · 화면 4 · 복원공유 · 새로고침
없으면 페이지 의미가 깨진다path param
뒤로가기에서 복원해야 한다query string
공유·복원이 필요 없다local state