밝을희 클태

[ JS ] searchParams 다루기 본문

JavaScript

[ JS ] searchParams 다루기

huipark 2024. 7. 6. 17:25

 searchParams에 대해서 정리를 해볼려고 한다. searchParams는 URLquery string을 칭한다. searchParams를 읽어서 특정 데이터를 가져오거나, 카테고리 등 많은 곳에 사용이 된다.

 

https://keynut.co.kr?keyword=hello&page=3

위 URL에서 노란색 부분이 searchParams가 된다.

 

searchParams를 읽는 방법은

Next.js 14 App Router에서는 useSearchParams 훅을 사용하여 읽기 전용의 searchParams 객체를 리턴받을 수 있다.

useSearchParams 훅으로 리턴받은 searchParams는 읽기 전용이므로 직접 수정할 수 없다. 대신, URLSearchParams 객체를 사용해 searchParams를 수정할 수 있다.

// https://keynut/shop?keyword=hello&page=3

import { useRouter, useSearchParams } from 'next/navigation';

useSearchParams().get("keyword")  //  "hello"
useSearchParams().get("page")  //  '3'

const params = new URLSearchParams(useSearchParams().toString());
params.set("page",8)
params.delete("page")

//URL에 반영하기
const router = useRouter();
router.push(`/shop?${params.toString()}`);

 

Node.JS환경

// URL에서 searchParams를 읽어오는 방법
const url = new URL('https://keynut.co.kr?keyword=hello&page=3');
const searchParams = new URLSearchParams(url.search);

console.log(searchParams.get('keyword')); // "hello"
console.log(searchParams.get('page')); // "3"

// searchParams에 새로운 파라미터를 추가하거나 수정하는 방법
searchParams.set('category', 'books');
console.log(searchParams.toString()); // "keyword=hello&page=3&category=books"

// 기존 파라미터를 삭제하는 방법
searchParams.delete('page');
console.log(searchParams.toString()); // "keyword=hello&category=books"

 

브라우저 환경

현재 URL에서 searchParams 읽기

// 현재 페이지의 URL을 가져오는 방법
const currentUrl = window.location.href;
const url = new URL(currentUrl);
const searchParams = new URLSearchParams(url.search);

console.log(searchParams.get('keyword')); // 현재 URL의 keyword 파라미터 값 출력
console.log(searchParams.get('page')); // 현재 URL의 page 파라미터 값 출력

 

 현재 URL에서 searchParams 수정하기

// 현재 페이지의 URL을 가져오는 방법
const currentUrl = window.location.href;
const url = new URL(currentUrl);
const searchParams = new URLSearchParams(url.search);

// searchParams에 새로운 파라미터 추가
searchParams.set('category', 'books');
console.log(searchParams.toString()); // "keyword=hello&page=3&category=books"

// searchParams에서 파라미터 삭제
searchParams.delete('page');
console.log(searchParams.toString()); // "keyword=hello&category=books"

// 수정된 searchParams를 URL에 반영하는 방법
url.search = searchParams.toString();
const newUrl = url.toString();
console.log(newUrl); // 수정된 URL 출력