useParams() · 경로 매치
:productId처럼 route pattern이 포착한 값을 읽는다. 자식 route는 부모 params도 상속하며, 값이 없거나 유효하지 않으면 해당 리소스 실패로 처리한다.
둘 다 주소에서 온 외부 문자열이므로 추출한 즉시 변환·검증하고, 공유할 상태를 별도 local state에 복제하지 않는다.
/products/42?page=2&sort=price
useParams() · 경로 매치:productId처럼 route pattern이 포착한 값을 읽는다. 자식 route는 부모 params도 상속하며, 값이 없거나 유효하지 않으면 해당 리소스 실패로 처리한다.
useSearchParams() · URLSearchParamspage·sort·filter처럼 선택 가능한 보기 조건을 읽고 쓴다. setter 호출은 navigation을 만들므로 링크 공유·새로고침·뒤로 가기와 같은 원본을 사용한다.
문자열 경계Number() 결과, 빈 값, 중복 key의 getAll()을 의도적으로 처리한다.
직접 진입깊은 링크로 새로 열어도 loader가 필요한 데이터를 복원하고 오류 UI를 제공한다.
history 의미사용자가 되돌릴 변경은 push, 정규화·일시 교정은 replace 여부를 구분한다.