๐ Dynamic Route, ๋์ ๋ผ์ฐํ
URL ๊ฒฝ๋ก์ ํน์ ๋ถ๋ถ์ ๋ณ์๋ก ์ค์ ํด, ๋ค์ํ ๊ฐ์ ๋ฐ๋ผ ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ๊ธฐ๋ฅ์ธ ๋์ ๋ผ์ฐํ ์ ๋ํ 3๊ฐ์ง ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค.
๐ ๊ธฐ๋ณธ ๊ท์น
ํด๋ ๊ตฌ์กฐ๋ก ๊ฒฝ๋ก๋ฅผ ํํํ๋ Nextjs๋ ๋๊ดํธ๋ฅผ ํตํด ๋์ ๋ผ์ฐํ ์ด ๊ฐ๋ฅํฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ex 1
- ๊ตฌ์กฐ :
app/post/[pageNum]/page.tsx
- URL :
/post/1
- params :
{ pageNum: 1 }
- ๊ตฌ์กฐ :
- ex 2
- ๊ตฌ์กฐ :
app/post/[title]/page.tsx
- URL :
/post/์ ๋ชฉ1
- params :
{ title : ์ ๋ชฉ1 }
- ๊ตฌ์กฐ :
๐ ๋จ์ผ ์ธ๊ทธ๋จผํธ
๋จ์ผ ์ธ๊ทธ๋จผํธ๋ก ๋์ ๋ผ์ฐํ ์ ํ๋ ค๋ฉด ์์ ์์์ ๋์ผํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
๐ ๊ท์น
[params_์ด๋ฆ]
โ params : { params_์ด๋ฆ : ๊ฐ }
๐ ํด๋ ๊ตฌ์กฐ
single
โโโ [id]
โโโ page.tsx
๐ ์์
type Props = { params: { id: string } };
export default function Single(props: Props) {
const { params } = props;
console.log("PROPS =>", props);
return (
<div>
<h1>{JSON.stringify(params)}</h1>
</div>
);
}
๐ ๊ฒฐ๊ณผ
/single/1

๐ ํฌ๊ด์ ์ธ ์ธ๊ทธ๋จผํธ
/post/a/1/hi
์ ๊ฐ์ด url์ ๋ชจ๋ ์ธ๊ทธ๋จผํธ๋ฅผ ํฌํจํ๋๋ก ํ์ฅํฉ๋๋ค.
ํฌํจ๋ ์ธ๊ทธ๋จผํธ ๊ฐ์ [a, 1, hi]
์ ๊ฐ์ด ๋ฐฐ์ด ํํ๋ก ๋ฐ์ ์ ์์ต๋๋ค.
๐ ๊ท์น
[...params_์ด๋ฆ]
โ params : { params_์ด๋ฆ : [๊ฐ1, ๊ฐ2, ...] }
๐ ํด๋ ๊ตฌ์กฐ
catchAll
โโโ [โฆid]
โโโ page.tsx
๐ ์์
type Props = { params: { id: string[] } };
export default function CatchAll(props: Props) {
const { params } = props;
console.log("PROPS =>", props);
return (
<div>
<h1>{JSON.stringify(params)}</h1>
</div>
);
}
๐ ๊ฒฐ๊ณผ
/catchAll/1/2/3/4

๐ ์ ํ์ ์ธ ํฌ๊ด์ ์ธ๊ทธ๋จผํธ
์ด ์ธ๊ทธ๋จผํธ๋ ๋ณ์๊ฐ ์์ด๋ ๋๊ณ , ์๋ค๋ฉด ํฌ๊ด์ ์ธ ์ธ๊ทธ๋จผํธ๋ก ๋ฐ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๐ ๊ท์น
[[...params_์ด๋ฆ]]
โ params : { params_์ด๋ฆ : [๊ฐ1, ๊ฐ2, ...] }
๐ ํด๋ ๊ตฌ์กฐ
optional
โโโ [[โฆid]]
โโโ page.tsx
๐ ์์
type Props = { params: { id?: string[] } };
export default function Optional(props: Props) {
const { params } = props;
console.log("PROPS =>", props);
return (
<div>
<h1>{JSON.stringify(params)}</h1>
</div>
);
}
๐ ๊ฒฐ๊ณผ
/catchAll
/catchAll/1

'React > Nextjs' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NextJS, SEO] AppRouter Dynamic Sitemap.xml ์์ฑํ๊ธฐ (0) | 2024.11.22 |
---|---|
[NextJS, SEO] AppRouter Dynamic Metadata ์์ฑํ๊ธฐ (0) | 2024.11.21 |
Vercel - Nextjs ๋ฐฉ๋ฌธ์ ์ ์ง๊ณ, ์น ๋ถ์ ์ด์ฉํ๊ธฐ (0) | 2024.10.10 |
[Nextjs] react-query๋ฅผ ์ด์ฉํ ์๋ฒ ๋ฐ์ดํฐ Prefetch ๋ฐฉ๋ฒ (0) | 2024.09.12 |
[Nextjs] searchParams๋ก URL ์ฟผ๋ฆฌ ์คํธ๋ง ํ์ฑํ๊ธฐ (0) | 2024.09.09 |
๋๊ธ