일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 타입스크립트
- @tailwind
- render phase
- 리액트
- 프로그래머스
- sever components
- supabase realtime
- @tailwind base
- 자바스크립트
- sever action
- commit phase
- client components
- iron-session
- SSR
- interceptor routes
- revalidatetag
- revalidatepath
- dynamic pages
- js
- 3진법 뒤집기
- unstable_nostore
- CSS
- RECOIL
- @tailwind components
- createbrowserrouter
- image component
- server components
- 클로저
- @tailwind utility
- static pages
- Today
- Total
개발하는 너구리
TIL-24.05.09 본문
쿼리스트링이란?
URL의 한 부분으로 요청하고자 하는 URL에 부가적인 정보를 포함하고 싶은 경우 사용
쿼리스트링의 사용 예시
http://myhomepage.com/products?sort=popular&sort=new
- url에서 ?를 통해 쿼리스트링이 시작된다는 표현을 할 수 있다
- 쿼리스트링은 key=value 형태의 문자열로 표현된다
- 쿼리스트링 내부에서 key=value 페어를 구분할 때는 & 연산자를 이용한다.
리액트에서 쿼리스트링을 사용하는 경우
<Link to="/products?sort=new" />
navigate("/products?sort=new") 와 같이 사용 가능하며
렌더링은 /products URL에 해당하는 컴포넌트를 그려준다.
리액트에서 쿼리스트링 가져오기
앞선 포스팅과 같이 react-router-dom 에서 제공하는 useLocation() Hook을 사용하면 /products 라는 pathname과 함께 ?sort=new 라는 search 값도 가져올 수 있게됩니다.
useLocation
import { useLocation } from 'react-router-dom'
// ex) url : https://velog.io/products?queryString
function Products() {
const location = useLocation();
console.log(location) // {pathname: '/products', search: '?queryString', hash: '', state: null, key: 'cfkmpx77'}
console.log(location.pathname) // '/products'
console.log(location.search) // '?queryString'
return (
<div>Products</div>
)
}
그러나 우리가 가져오기 원하는 쿼리스트링 부분에 key=value 페어가 많아지게 되면
원하는 정보만 파싱하는 것이 어려워지게 됩니다.
useSearchParams Hook은 이러한 문제를 해결해 주며 더 나은 기능을 제공해줍니다.
useSearchParams
import { useSearchParams } from 'react-router-dom'
// ex) url : https://velog.io/products?queryString
function Products() {
const [ searchParams, setSearchParams ] = useSearchParams();
return (
<div>Products</div>
)
}
useSearchParams Hook 은 useState와 비슷하게
searchParams와 setSearchParams를 배열의 형태로 리턴해주는데
위의 예시코드와 같이 사용하면 원하는 쿼리스트링 값을 얻을수도, 설정해 줄 수도 있습니다.
searchParams : URLSearchParams 객체, 쿼리스트링을 다루기 위한 여러 메서드 제공
setSearchParams : 인자에 객체 or 문자열을 넣어 URL의 쿼리스트링 변경
searchParams의 다양한 기능
- get
searchParams.get(key) : 특정한 key의 value 값 가져오기
searchParams.getAll(key) : 특정한 key의 모든 value 값 가져오기
searchParams.toString() : 쿼리스트링 전체를 문자열로 리턴 - set
searchParams.set(key, value) : 전달한 key값을 value로 설정
searchParams.append(key, value) : 기존 값을 유지한 채 (key=value) 페어를 추가함
searchParams.delete(key) : 전달한 key값에 해당하는 모든 쿼리문 삭제
searchParams로 쿼리스트링을 세팅해주는 경우
setSearchParams 메서드로 적용을 시켜주어야 url에 반영이 된다.
'TIL' 카테고리의 다른 글
TIL-24.05.13 (0) | 2024.05.13 |
---|---|
TIL-24.05.10 (0) | 2024.05.10 |
TIL-24.05.08 (0) | 2024.05.08 |
TIL-24.05.07 (0) | 2024.05.07 |
TIL-24.05.03 (0) | 2024.05.03 |