프로젝트를 진행하다보면 백엔드에서 "쿼리스트링으로 전달해주세요" 라고 말씀하실 때가 있는데...

이렇게 바보 같이 앉아있을 순 없으니 쿼리스트링이 무엇이고 어떻게 쓰이는 것인지에 대해 알아보고 정리해보도록 하자!
1억개의 상품이 존재한다고 가정했을 때 이것을 판매량 순, 최신순, 리뷰순 등으로 더 정렬되고 특정되 형태의 정보로 구체적으로 요청할 때 활용할 수 있다.

? 를 통해서 쿼리스트링의 시작을 알린다.key = value로 표현된다.key=value 페어의 개수 제한은 없다. (& 으로 각 key=value의 페어를 구분한다.)useLocation useSearchParamspathname 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를 인자로 전달하면서 호출해야한다.