프로젝트를 진행하다보면 백엔드에서 "쿼리스트링으로 전달해주세요" 라고 말씀하실 때가 있는데...
이렇게 바보 같이 앉아있을 순 없으니 쿼리스트링이 무엇이고 어떻게 쓰이는 것인지에 대해 알아보고 정리해보도록 하자!
1억개의 상품이 존재한다고 가정했을 때 이것을 판매량 순, 최신순, 리뷰순 등으로 더 정렬되고 특정되 형태의 정보로 구체적으로 요청할 때 활용할 수 있다.
?
를 통해서 쿼리스트링의 시작을 알린다.key = value
로 표현된다.key=value
페어의 개수 제한은 없다. (&
으로 각 key=value
의 페어를 구분한다.)useLocation
useSearchParams
pathname
search
hash
state
key
등)로 표현 하고 있다.search
이다. Location 객체 search 프로퍼티 URL중 쿼리스트링에 대한 정보가 문자열 형태로 저장되어 있다.
import React from 'react';
import { useLocation } from 'react-router-dom';
const List = () => {
const location = useLocation();
const queryString = location.search;
return (
<section>
<h1>This is List Page</h1>
<p>
쿼리 스트링: <b>{queryString}</b>
</p>
</section>
);
};
export default List;
?sort=popular
로 표현하기 때문에 이 중에서 원하는 값만 가져오려면 문자열을 자바스크립트를 통해 parsing하는 과정을 거쳐야한다.?
를 문자열에서 제거하고, sort
문자열을 찾아내고 =
뒤에 위치한 값을 최종적으로 꺼내오는 과정을 거쳐야한다는 것이다.useSearchParams
라는 hook이 존재한다. const [searchParams, setSearchParams] = useSearchParams();
?sort=popular&sort=latest
값을 읽어오는 메서드
searchParams.get(key)
searchParams.get("sort")
=> "popular"
searchParams.getAll(key)
searchParams.getAll("sort")
=> ["popular","latest"]
searchParams.toString()
searchParams.toString("sort")
=> "?sort=popular&sort=latest"
값을 변경하는 메서드
searchParams.set(key, value)
searchParams.set("sort", "clear")
호출searchParams.toString()
=> "?sort=clear"
searchParams.append(key, value)
searchParams.append("sort", "clear")
호출searchParams.toString()
=> "?sort=popular&sort=latest&sort=clear"
💡 seachParams의 값을 변경하더라고 실제 URL의 쿼리스트링은 변경되지 않는다. 만약 변경시키고 싶다면, setSearchParams 함수에 searchParams를 인자로 전달하면서 호출해야한다.