[리액트를 다루는 기술] useSearchParams를 이용한 URL 쿼리스트링 관리

쿼카쿼카·2022년 10월 5일
0

코드

import React from 'react'
import { useSearchParams } from 'react-router-dom'

function About() {
  const [searchParams, setSearchParams] = useSearchParams();
  const detail = searchParams.get('detail');
  const mode = searchParams.get('mode');

  function onToggleDetail() {
    setSearchParams({mode, detail: detail === 'true' ? false : true});
  }

  function onIncreaseMode() {
    setSearchParams({mode: mode === null ? 1 : parseInt(mode) + 1, detail});
  }

  return (
    <div>
      <h1>소개</h1>
      <p>리액트 라우터를 사용해 보는 프로젝트입니다.</p>
      <p>detail: {detail}</p>
      <p>mode: {mode}</p>
      <button onClick={onToggleDetail}>Toggle Detail</button>
      <button onClick={onIncreaseMode}>mode + 1</button>
    </div>
  )
}

export default About

useSearchParams

  • 배열 타입 반환
    • 첫 원소
      • 쿼리파라미터를 조회하거나 수정하는 매서드들이 담긴 객체 반환
      • get 메서드: 쿼리파라미터 조회
      • set 매서드: 쿼리파라미터 업데이트
      • 쿼리 파라미터가 존재하지 않는다면 null로 조회
    • 두 번째 원소
      • 쿼리파라미터를 객체 형태로 업데이트 할 수 있는 함수 반환
  • 주의할 점

    • 쿼리파라미터를 조회할 때 값은 무조건 문자열 타입
    • 비교할 때 꼭 'true'처럼 따옴표로 감싸주고 숫자는 parseInt로 변환
profile
쿼카에요

0개의 댓글