๐ Catch all URL
์ด๋ค URL์ด๋ catch ํด๋ด๋ url ํญ์์ ์๋์ง๋ง ํ์ํ ์๊ฐ์ด ์์
์๋ฅผ ๋ค์ด ์ํ ์ ๋ชฉ์ url์ ๋ฃ์ด SEO์ ์ข์
ํ์ผ๋ช ์ [โฆid].js ์ฒ๋ผ ์์ โฆ ์ ๋ถ์ฌ์ค๋ค.
1
2
3
4
5
const router = useRouter();
const onClick = (id: string, title: string) => {
router.push(`/movies/${title}/${id}`);
};
/movies/${title}/${id}๋ก url์ ์ด๋์ํฌ๋ router๋ฅผ ๋ค์ฌ๋ค๋ณด๋ฉด
๋ฐฐ์ด์ ํํ๋ก params๊ฐ ์์ฑ๋๊ฒ์ ๋ณผ์ ์๋ค.
1
2
3
4
5
const router = useRouter();
console.log(router);
const [title, id] = router.query.params;
์๋ก๊ณ ์นจํ๋ฉด ๋ฐฑ์๋์์ pre-render๋๊ธฐ ๋๋ฌธ์ router.query.params ๊ฐ ์์ด ์ค๋ฅ๊ฐ๋จ
1
2
// || [] ๋ถ์ด์ ์ด๊ธฐ๊ฐ ๋ฐฐ์
const [title, id] = router.query.params || [];
๋ง๋ฌด๋ฆฌ๋ก SEO ์ต์ ํ๋ฅผ ์ํด getServerSideProps๋ฅผ ์ด์ฉ
1
2
3
4
5
6
export function getServerSideProps({ params: { params } }: any) {
return {
props: {
params,
},
};