
1. QueryString
๋ฐฉ๋ฒ
1. QueryString
'?q=ํ์ ' ์๋ฐ ์์ผ๋ก ์ ๋ฌ๋๋ ์ฟผ๋ฆฌ ์คํธ๋ง์ ์ด ํ์ด์ง ์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ดค๋ค.
์ฟผ๋ฆฌ ์คํธ๋ง์ ๊ฒฝ์ฐ์๋ ์ด๋ ๊ฒ ๊ฒฝ๋ก ๋์ ๋ฌผ์ํ์ ํจ๊ป ๋ช ์๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๋ผ์ฐํ ์๋ ์ ํ ์ํฅ์ ์ฃผ์ง ์์์
=> ๊ทธ๋์ ํ๋ก์ ํธ์์๋ ๋ณ๋๋ก ์ฟผ๋ฆฌ ์คํธ๋ง์ ์ํด ํด๋ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ํ์ง ์๋๋ค.
์ฟผ๋ฆฌ ์คํธ๋ง์ ๊บผ๋ด ์ฐ๋ ค๋ฉด App Router ๋ฐฉ์์์๋ ํด๋น ์ปดํฌ๋ํธ Props๋ฅผ ํตํด ๊บผ๋ด ์ด๋ค.
=> App Router์ Next ์ฑ์์๋ ์ฟผ๋ฆฌ ์คํธ๋ง์ด๋ URL ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ๊ฒฝ๋ก์์ ํฌํจ๋๋ ๊ฐ๋ค์ ์ปดํฌ๋ํธ์๊ฒ ๋ชจ๋ props๋ก์จ ์ ๋ฌ์ด ๋๋ค.
![]() |
![]() |
props๋ฅผ ๋ฐ์์์ console.log() ๋ก ์ถ๋ ฅ์ ํด์ฃผ๋ฉด,
- searchParams: Promise { } : searchParams๋ผ๋ ๊ฐ์ด Promise ๊ฐ์ฒด๋ก ์ ์ฅ ๋ผ ์๋ ๊ฒ์ ํ์ธ O
- params: Promise { } : url ํ๋ผ๋ฏธํฐ์ธ params์ ๊ฐ๋ Promise ๊ฐ์ฒด๋ก ์ ์ฅ ๋ผ ์๋ ๊ฒ์ ํ์ธ O
props๋ก ์ ๋ฌ์ด ๋๊ณ ์๋ ๊ฒ๋ค์ ๊บผ๋ด์ ํ์ฉํ๊ณ ์ ํ๋ค๋ฉด, => ํ์ ์ ์๋ถํฐ!
(ex)
1. page.tsx ์ปดํฌ๋ํธ์ props๋ก "searchParams" ๋ผ๋ ๊ฐ์ฒด๊ฐ ๋ด๊ฒจ์๋ ๊ฒ์ ํ์ธํ๋๋ฐ,
2. "searchParams"์ ํ์ ์? => Promise ๊ฐ์ฒดํํ!
3. ๊ทธ ์์๋ q:string ์ด๋ผ๋ ๊ฒฐ๊ณผ ๊ฐ์ ํฌํจํ๊ณ ์๋ค.
# 1. props ํ์
์ ์
export default function Page({ searchParams }:{ searchParams:Promise<{q:string}> }) {
return (
<div>
search ํ์ด์ง
</div>
);
}
// { searchParams } ๋ผ๋ ๊ฐ์ { searchParams:Promise } Promise๋ผ๋ ๊ฐ์ฒดํํ์ด๊ณ
// ๊ทธ ์์ <{q:string}>์ด๋ผ๋ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค.
-----
#2. ๊ตฌ์กฐ๋ถํด ํ ๋น์ผ๋ก q ๊บผ๋ด์ค๊ธฐ
export default function Page({ searchParams }:{ searchParams:Promise<{q:string}> }) {
const { q } = await searchParams;
// ๊ตฌ์กฐ๋ถํด ํ ๋น์ ์ด์ฉํด์ await search params๋ก๋ถํฐ ์ด q๋ผ๋ ๊ฐ์ ๊บผ๋ด์ค๋๋ก ์ฌ์ฉํ๋ฉด ๋๋ค
return (
<div>
search ํ์ด์ง: {q}
</div>
);
}
-----
# 3. async ์ถ๊ฐ + { q } ์ฌ์ฉ
export default async function Page({ searchParams }:{ searchParams:Promise<{q:string}> }) {
const { q } = await searchParams;
return (
<div>
search ํ์ด์ง: {q}
</div>
);
}

+ ์ด๋ป๊ฒ ํจ์ํ ์ปดํฌ๋ํธ์ async๋ฅผ ์ฌ์ฉํ ์ ์๋๊ฐ?
=> ๋ฆฌ์กํธ์ ์๋ฒ ์ปดํฌ๋ํธ์ด๊ธฐ์ ๊ฐ๋ฅ!
=> ์๋ฒ ์ปดํฌ๋ํธ๋, ์๋ฒ ์ธก์์ ์ฌ์ ๋ ๋๋ง์ ์ํด์ ๋ฑ 1๋ฒ ์คํ์ด ๋๊ธฐ์ ๊ทธ ์์ ์ ๋น๋๊ธฐ์ ์ผ๋ก ์คํ๋ผ๋ ๋ฌธ์ X
(์ถํ ๋ณด๊ฐ)
'๐ป DEV > NextJS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Next JS] Layout (feat. RouteGroup) (1) | 2025.08.28 |
|---|---|
| [Next JS] ๋์ ๊ฒฝ๋ก ๋ผ์ฐํ : ํด๋/[ ]/page.tsx (feat : Catch all segment, optional catch all segment) (0) | 2025.08.27 |
| [NEXT.js] 5. Link ์ปดํฌ๋ํธ ์ฌ์ฉ ์ด์ ( new- link ) (0) | 2024.06.19 |
| [NEXT.js 14] 5. Layout(feat. { children }: { children: ReactNode }) props (1) | 2024.06.18 |
| [NEXT.js 14] 4. Font ๋ฐ๊พธ๊ธฐ (0) | 2024.06.17 |


๋๊ธ