๐คทโ๏ธ ๋ณธ๋ก ์ ์์
๋ณธ๋ก ์ ์์ ๋ฆฌ์กํธ(react) ํ๋ก์ ํธ๋ฅผ ์งํ ์ค์ ์ฟผ๋ฆฌ ์คํธ๋ง ๋ค๋ฃจ๊ธฐ ์ํด์ URLSearchParams API๋ฅผ ํ์ฉํด ์ฟผ๋ฆฌ ์คํธ๋ง์ ๋ค๋ฃจ๋ฉด์ ๊ฒช์ ์ ์ ๊ฒฝํ์ ๊ณต์ ํด ๋๋ฆฝ๋๋ค.
๐คทโ๏ธ URLSearchParams ๊ฐ๋
URLSearchParams๋ JavaScript ์น API์ค ํ๋๋ก URL ์ฃผ์์์ ๊ฐ์ฅ ๋ค๋ฃจ๊ธฐ ๊น๋ค๋ก์ด ์ฟผ๋ฆฌ ์คํธ๋ง์ ์ฝ๊ฒ ๋ค๋ฃฐ์ ์๋๋ก ๋๋ ๊ฐ์ฒด์ ๋๋ค.
URLSearchParams MDN
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
๐คทโ๏ธ ์ฟผ๋ฆฌ ์คํธ๋ง์ด๋?
URL ์ฃผ์๋ฅผ ๋ณด๋ฉด ๋๋ฉ์ธ ๋ค์ ? ์์ํ๋ ๊ธฐํธ๋ฅผ ํํ ๋ณผ ์ ์์ต๋๋ค.
? ๊ธฐํธ ๋ค์ ๋ถ๋ ๊ฐ๋ค์ ์ฟผ๋ฆฌ ์คํธ๋ง(Query String) ๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ key-value ํํ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ฟผ๋ฆฌ ์คํธ๋ง์ ํํฐ๋ง, ํ์ด์ง๋ค์ด์ , ์ ๋ ฌ, ๋ ์ง ๋ฑ ๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ๊ฐ์ ๊ฒฝ์ฐ๋ ํํฐ๋ง, ์ ๋ ฌ, ๋ ์ง์ ๋ํ ๊ฐ๋ค์ ์ฟผ๋ฆฌ์คํธ๋ง์ ์ฌ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด
https://example.com/?name=John&age=30
? ๊ธฐํธ ๋ค์ name=john๋ key-value ํํ์ด๊ณ & ๊ธฐํธ๋ก ๊ตฌ๋ถํ์ฌ ์๋ก์ด key-value ํํ์ ์ฟผ๋ฆฌ์คํธ๋ง์ ๋ช ์ํ ์ ์์ต๋๋ค.
์ด ๋ถ๋ถ์ด ์ฟผ๋ฆฌ ์คํธ๋ง์ ๋๋ค.
?name=John&age=30
๐คทโ๏ธ URLSearchParams ์ฌ์ฉ๋ฐฉ๋ฒ
URLSearchParams ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
const searchParams = new URLSearchParams(location.search);
or
const params = new URLSearchParams(window.location.search);
์ด ์ฝ๋๋ URLSearchParams ๊ฐ์ฒด๋ฅผ ํ ๋ฒ์ ์์ฑํฉ๋๋ค.
๊ทธ๋์ ์ฌ๋ฌ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
URLSearchParams get ์ฌ์ฉ์์
https://example.com/?name=John&age=30
const searchParams = new URLSearchParams(location.search);
const name = searchParams.get('name');
//๊ฒฐ๊ณผ๊ฐ์ name์ value ๊ฐ์ธ John ์
๋๋ค.
์ฌ๋ฌ ๊ฐ ์ฟผ๋ฆฌ ์คํธ๋ง์ ๊ฐ๋ค์ ์ฌ์ฉํ ๋ ์ฑ๋ฅ์ด๋ ์ฝ๋ ๊ฐ๋ ์ฑ ๋ฉด์์ ์ข์ต๋๋ค.
URLSearchParams set ์ฌ์ฉ์์
const searchParams = new URLSearchParams('name=John&age=30');
searchParams.set("name", "yoo");
searchParams.set("age", 1);
๊ฒฐ๊ณผ๊ฐ: ?name=yoo&age=1
set ๋ฉ์๋๋ ์ด๋ฏธ ์กด์ฌํ๋ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ค๋ฒ๋ผ์ด๋ ํฉ๋๋ค.
URLSearchParams append ์ฌ์ฉ์์
const searchParams = new URLSearchParams('name=John&age=30');
searchParams.append("name", "yoo");
๊ฒฐ๊ณผ๊ฐ: name=John&age=30&name=yoo
append ๋ฉ์๋๋ ๊ธฐ๋ณธ ํ๋ผ๋ฏธํฐ ๊ฐ์ด ์์ด๋ ์๋ก์ด ๊ฐ์ ์ถ๊ฐํฉ๋๋ค.
URLSearchParams delete ์ฌ์ฉ์์
const searchParams = new URLSearchParams('name=John&age=30');
searchParams.delete("name");
๊ฒฐ๊ณผ๊ฐ: ?age=30
delete ๋ฉ์๋๋ ํน์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ญ์ ํฉ๋๋ค.
๐คทโ๏ธ URLSearchParams ๋ง์ง๋ง์ผ๋ก
URLSearchParams ์ฌ์ฉ๋ฒ์ ๋ํด์ ์ ๋ฆฌ๋ฅผ ํด๋ดค์ต๋๋ค.
๋ ๋ค์ํ URLSearchParams ๊ฐ์ฒด์ ๋ฉ์๋๋ค์ด ์กด์ฌํ์ง๋ง ์ ๋ ์์ 4๊ฐ ๋ฉ์๋๋ฅผ ๊ฐ๋ ์ ์ดํดํ๊ณ ์ฌ์ฉ์ ํ์ ๋ ์ค๋ฌด์์ ๋ฌธ์ ์์ด ์ฌ์ฉํ์ค ์ ์๋ค๊ณ ์๊ฐํด์ URLSearchParams ๊ฐ์ฒด์ get, set, append, delete ๋ฉ์๋๋ฅผ ์ ๋ฆฌํด ๋ดค์ต๋๋ค.
์ฌ๋ฐ๋ ์ค๋์ ๋ ๋ณ ์ด์ธ ๋ณด๊ณ ๊ฐ์ธ์!
https://cometruedream.tistory.com/247
https://cometruedream.tistory.com/243
https://cometruedream.tistory.com/242
https://cometruedream.tistory.com/241
https://cometruedream.tistory.com/244