[React] Query String 이해하기
포스트
취소

[React] Query String 이해하기

Query String이란?

Query String은 URL 뒤에 ?를 붙이고 key-value 형태의 값을 전달하는 방식입니다.

/search?keyword=react

여기서 keyword=react가 query string입니다.

검색어, 필터, 정렬 조건처럼 페이지 조회 조건을 URL에 담을 때 자주 사용합니다.


기본 형태

Query String은 ? 뒤에 작성합니다.

/search?keyword=react

여러 값을 함께 전달할 때는 &로 연결합니다.

/search?keyword=react&page=2&sort=latest

이 URL에는 다음 값들이 들어 있습니다.

keyvalue
keywordreact
page2
sortlatest

언제 사용할까요?

Query String은 화면의 조회 조건을 URL에 남기고 싶을 때 유용합니다.

예를 들면 이런 상황입니다.

  • 검색어
  • 페이지 번호
  • 정렬 방식
  • 필터 조건
  • 탭 상태

URL에 조건이 남아 있으면 새로고침해도 같은 화면을 유지하기 쉽고, 다른 사람에게 링크를 공유하기도 좋습니다.


useSearchParams로 값 읽기

React Router에서는 useSearchParams를 사용해 query string을 읽을 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { useSearchParams } from "react-router-dom";

const SearchResult = () => {
  const [searchParams] = useSearchParams();

  const keyword = searchParams.get("keyword");
  const page = searchParams.get("page");

  return (
    <div>
      <p>검색어: {keyword}</p>
      <p>페이지: {page}</p>
    </div>
  );
};

export default SearchResult;

searchParams.get("keyword")keyword 값 하나를 가져옵니다.

값이 없으면 null이 반환됩니다.


Query String 변경하기

setSearchParams를 사용하면 query string을 변경할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import { useSearchParams } from "react-router-dom";

const SearchPage = () => {
  const [searchParams, setSearchParams] = useSearchParams();

  const handleSearch = () => {
    setSearchParams({
      keyword: "react",
      page: "1",
    });
  };

  return <button onClick={handleSearch}>검색</button>;
};

export default SearchPage;

버튼을 누르면 URL이 아래처럼 바뀝니다.

/search?keyword=react&page=1

useLocation으로도 읽을 수 있어요

useLocation을 사용하면 query string 문자열 자체를 확인할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
import { useLocation } from "react-router-dom";

const SearchResult = () => {
  const location = useLocation();

  console.log(location.search); // "?keyword=react"

  return <h1>검색 결과</h1>;
};

export default SearchResult;

다만 이 경우 직접 파싱해야 하므로, 일반적으로는 useSearchParams가 더 편합니다.


Path Parameter와의 차이

Path Parameter는 특정 리소스를 나타낼 때 사용합니다.

/posts/15

Query String은 조회 조건이나 옵션을 나타낼 때 사용합니다.

/posts?keyword=react&sort=latest

상세 페이지 id처럼 리소스 자체를 구분하는 값은 path parameter가 잘 맞고, 검색 조건처럼 바뀔 수 있는 값은 query string이 잘 맞습니다.


마무리

Query String은 URL에 검색 조건이나 필터 상태를 담을 때 유용합니다.

React Router에서는 useSearchParams를 사용하면 query string을 쉽게 읽고 변경할 수 있습니다.

검색, 필터, 페이지네이션처럼 URL에 상태를 남겨야 하는 화면이라면 query string을 활용해보면 좋습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.