URL STATE

라우트 파라미터와 쿼리 상태

React Router에서 params와 search params는 둘 다 URL에 있지만 의미가 다르다. 리소스 정체성은 path parameter로, 필터와 정렬처럼 같은 리소스를 보는 방식은 query string으로 두면 새로고침과 공유 링크가 안정된다.

01

상태 성격 분류

값이 리소스 자체를 가리키는지, 목록을 보는 조건인지 구분한다.

정체성과 보기 옵션을 섞지 않는다
02

Param 추출

useParams로 문자열 값을 읽고 숫자나 enum이 필요하면 명시적으로 변환한다.

params는 기본적으로 문자열이다
03

Query 관리

useSearchParams로 page, filter, sort를 읽고 기본값과 허용값을 둔다.

없는 query도 정상 상태로 처리한다
04

데이터 요청 연결

param과 query가 바뀔 때 fetch key와 cache key가 함께 바뀌는지 확인한다.

이전 결과가 남으면 stale UI가 된다
05

탐색 동작 확인

뒤로가기, 새로고침, 링크 공유에서 같은 화면 상태가 복원되는지 본다.

URL 상태의 목적이다
Path param
리소스 정체성 상세 페이지 id, slug, username처럼 없으면 다른 페이지가 되는 값이다.
없는 값은 404나 오류로 닫는다
Search param
보기 조건 page, q, sort, filter처럼 같은 리소스 목록의 표현을 바꾼다.
기본값을 정한다
Local state
공유 불필요 상태 열림 여부나 임시 입력처럼 URL 복원이 필요 없으면 state에 둔다.
URL을 과하게 복잡하게 만들지 않는다
Validation
허용값 검사 숫자 변환 실패, enum 외 값, 음수 page를 안전한 기본값이나 오류로 처리한다.
URL은 사용자가 마음대로 바꿀 수 있다

라우트 확인

직접 접근 깊은 URL을 새 탭에서 열어 같은 데이터와 필터가 복원되는지 확인한다.
잘못된 값 없는 id와 이상한 query가 화면을 깨뜨리지 않는지 본다.
뒤로가기 필터 변경 뒤 브라우저 뒤로가기가 이전 조건을 복원하는지 확인한다.