React
์ Query String
ํ์ฉํ์ฌ ์ํ๋ฅผ ๊ฐ์งํ๊ณ ๊ด๋ฆฌํ๊ธฐQuery String
( ์ฟผ๋ฆฌ ์คํธ๋ง )์ URL์ ํ ๋ถ๋ถ์ผ๋ก ์์ฒญํ๊ณ ์ ํ๋ URL์ ๋ถ๊ฐ ์ ๋ณด๋ฅผ ํฌํจ ํ ๋ ์ฌ์ฉํ๋ค. ๊ฒ์์ด๋ ์ ๋ ฌ ๋ฑ ํน์ ํํ์ ์ ๋ณด๋ฅผ ์์ฒญํ ๋ ์ฌ์ฉํ๋ค.
https://www.example.com/products?sort=latest
Query String:
key=value
ํํ์ ๋ฌธ์์ด๋ก ํํ
- key=value ํ์ด์ ๊ฐ์ ์ ํ ์์
?
: ์ฟผ๋ฆฌ์คํธ๋ง์ ์์ ํ์&
: key=value ํ์ด ๊ตฌ๋ถ ํ์( separator )
react-router-dom
์์๋ ์ฟผ๋ฆฌ ์คํธ๋ง์ ๊ฐ์ ํธํ๊ฒ ๊ฐ์ ธ์ฌ ์ ์๋ hook
๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํด์ค๋ค.
useLocation
ํ์ฌ Location
๊ฐ์ฒด, ์ฆ ํ์ฌ URL์ ํฌํจ๋ pathname
, search
๋ฑ์ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
import { useLocation } from 'react-router-dom';
const location = useLocation();
const queryString = location.search; //?sort=latest
useSearchParams
์ฟผ๋ฆฌ ์คํธ๋ง์ ๊ฐ์ ์ด์ฉํด URLSearchParams ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํด์ค๋ค.
URLSearchParams
๊ฐ์ฒด๋ ์ฟผ๋ฆฌ ์คํธ๋ง์์ ์ํ๋ ๊ฐ์ ์ป์ ์ ์๋๋ก ๋ค์ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
useSearchParams
๋ ๋ค์๊ณผ ๊ฐ์ด ํธ์ถํ๋ค.
const [searchParams, setSearchParams] = useSearchParams();
searchParams.get(key)
: ํน์ ํ key์ value๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฉ์๋searchParams.getAll(key)
: ํน์ ํ key์ ๋ชจ๋ value๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฉ์๋, ๋ฐฐ์ด ํํ๋ก ๋ฆฌํด//ex) ?sort=popular&sort=latest
searchParams.get("sort") // "popular"
searchParams.getAll("sort") // ["popular","latest"]
searchParams.toString()
: ์ฟผ๋ฆฌ ์คํธ๋ง์ ๊ฐ์ string ํํ๋ก ๊ทธ๋๋ก ๋ฆฌํด//ex) ?sort=latest&color=white
searchParams.toString() // "?sort=latest&color=white"
searchParams.set(key, value)
: ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด์ ์ธ์๋ก ์ ๋ฌํ key ๊ฐ์ value๋ก ์ค์ searchParams.set("sort", "oldest")
searchParams.toString() // "?sort=oldest"
searchParams.append(key, value)
: ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด์ ์ธ์๋ก ์ ๋ฌํ key ๊ฐ์ value๋ก ์ถ๊ฐํ๋ ๋ฉ์๋searchParams.append("sort", "latest")
searchParams.toString() // sort=oldest&sort=latest"
searchParams.delete(key)
: ํด๋น ํค์ ํ๋์ค ์ญ์ searchParams.has(key)
: ํน์ key๊ฐ ์ฟผ๋ฆฌ ์คํธ๋ง์ ์กด์ฌํ๋์ง ํ์ธํ๊ณ boolean ๊ฐ ๋ฐํsearchParams.keys()
: ๋ชจ๋ key๋ฅผ ์ํํ๋ Iterator ๋ฐํfor (const key of searchParams.keys()) {
console.log(key);
}
// "sort", "color", "page" ๋ฑ
searchParams.values()
: ๋ชจ๋ value๋ฅผ ์ํํ ์ ์๋ Iterator๋ฅผ ๋ฐํsearchParams.entries()
: ๋ชจ๋ key-value ์์ ์ํํ ์ ์๋ Iterator ๋ฐํfor (const [key, value] of searchParams.entries()) {
console.log(`${key}: ${value}`);
}
// sort: latest
// color: white
// page: 1
searchPars.sort()
: ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ