( 동적 라우팅처럼 Router 컴포넌트에 별도의 특별한 설정을 할 필요는 없다. )
? : 쿼리스트링 시작
sort=popular : key, value 형태로 표현 (하나의 페어)
& : 페어를 구분
Link 컴포넌트나 useNavigate 를 사용하여 라우팅
<Link to="/productList?sort=popular" />
navigate("/productList?sort=popular")
const [searchParams, setSearchParams] = useSearchParams();
쿼리스트링을 쉽게 다룰 수 있게 여러 메서드를 제공해주는 hook 👊🏻
URLSearchParams 객체, 쿼리스트링을 다루기 위한 여러 메서드 제공
쿼리스트링은 자바스크립트로 파싱해야 읽어낼 수 있다.
searchParams에 정의된 메서드를 호출해서 쿼리 스트링에서 원하는 값을 편리하게 가져올 수 있다.
offset 은 몇 번째 아이템부터 보여줄 것인가 ?
limit 은 한 번에 몇 개를 보여줄 것인가 ?
👇🏻 참고할만한 코드
import React from "react";
import { useSearchParams } from "react-router-dom";
const List = () => {
const [searchParams, setSearchParams] = useSearchParams();
const setSortParams = () => {
searchParams.set("sort", "clear");
setSearchParams(searchParams);
};
const appendSortParams = () => {
searchParams.append("sort", "hello-world");
setSearchParams(searchParams);
};
return (
<section>
<h1>This is List Page</h1>
<p>
toString: <b>{searchParams.toString()}</b>
</p>
<p>
get("sort"): <b>{searchParams.get("sort")}</b>
</p>
<p>
getAll("sort"):
{searchParams.getAll("sort").map((value) => (
<b key={value}>{value} </b>
))}
</p>
<button onClick={setSortParams}>setSortParams</button>
<button onClick={appendSortParams}>appendSortParams</button>
</section>
);
};
export default List;
useLocation 으로 url 정보 (쿼리스트링 포함) 를 가져올 수 있다.
그 정보의 속성들을 알아보자.
우선 location 의 기본 구조는 이렇게 생겼다.
interface Location {
pathname: string;
search: string;
hash: string;
state: unknown;
key: string;
}
예시 )
http://www.ohaangdoo.com/productList?sort=popular&color=black#favorite
라는 주소에서 location 을 찍으면, 어느 속성에 어느 부분이 담겨 보여질까?