๐ก TIL 20230818 - Next.js 13 - getStaticProps, getStaticPaths (feat. 12๋ฒ์ ์์์ getServerSideProps)
1. 12๋ฒ์ : getServerSideProps
Next.js 12๋ฒ์ ์์๋ Data Fetching์ pre-rendering ํ๋ ค๋ฉด getServerSideProps ํจ์๋ฅผ ์ฌ์ฉํ์๋ค.
1) getServerSideProps ์ฝ๋ ์์
import Seo from "../../components/Seo";
import { useRouter } from "next/router";
export default function Detail({ params }) {
const router = useRouter();
const [title, id] = params || [];
return (
<div>
<Seo title={title} />
<h4>{title}</h4>
</div>
);
}
export function getServerSideProps({ params: { params } }) {
return {
props: {
params,
},
};
}
๋ ธ๋ง๋์ฝ๋ Next.js ๋ฌด๋ฃ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์, ๊ฐ์์์ ์งํํ๋ Next.js 12๋ฒ์ ์ฝ๋์ด๋ค. ์ ์ฝ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋์ผ๋ฏ๋ก, ์ด ์ฝ๋๋ฅผ ํ์ ์คํฌ๋ฆฝํธ+Next.js 13๋ฒ์ ์ผ๋ก ์์ ํด์ ์์ฑํด๋ณด์๋ค.
2. 13๋ฒ์ : getStaticProps, getStaticPaths
Next.js 13๋ฒ์ ์์๋ getStaticProps, getStaticPaths ํจ์๋ฅผ ์ฌ์ฉํ์ฌ Fetching data๋ฅผ pre-render ํ ์ ์๋ค.
1) 13๋ฒ์ ์ผ๋ก ๋ฆฌํฉํ ๋ง
์์ ์๋ฐ์คํฌ๋ฆฝํธ+12๋ฒ์ ์ฝ๋์์ ํ์ ์คํฌ๋ฆฝํธ+13๋ฒ์ ์ผ๋ก ์์ ํ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
import Seo from "@/components/Seo";
import { GetStaticPropsContext } from "next";
// import { useRouter } from "next/router";
import React from "react";
interface DetailProps {
params: [string, string];
}
const Detail = ({ params }: DetailProps) => {
// router.query๋ฅผ ๋ณด๋ฉด ํ์ผ๋ช
์์ ์ค์ ํด์ค movieId๊ฐ key๊ฐ์ผ๋ก ๋ค์ด๊ฐ์์
const [title, id] = params || [];
return (
<div>
<Seo title={title} />
<h4>{title}</h4>
</div>
);
};
export default Detail;
interface ParamsProps {
params: {
params: GetStaticPropsContext
}
};
// 1. URL์ ๋ค์ด์๋ ์ํ์ ๋ชฉ์ ์ฌ์ฉํ์ฌ SEO ์ต์ ํ
// 2. ์ ์ ๊ฐ ์ ์ํ๊ธฐ ์ ์ <title></title> ์ ๋ชฉ์ ๋ณ๊ฒฝํด์ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ ๋
export const getStaticProps = async ({params: { params }}: ParamsProps) => {
return {
props: { params },
};
};
export const getStaticPaths = async () => {
return {
paths: [], // ๋์ ๊ฒฝ๋ก๊ฐ ์์ผ๋ฏ๋ก ๋น ๋ฐฐ์ด๋ก ์ค์
fallback: 'blocking', // ๋ค๋ฅธ ๊ฒฝ๋ก๋ก์ ์ ๊ทผ์ ์๋ฒ ์ฌ์ด๋์์ ๋๊ธฐ
};
};
์ฐธ๊ณ ์ฌ์ดํธ
๋ ธ๋ง๋์ฝ๋ - NextJS ์์ํ๊ธฐ
'โ๏ธ What I Learned > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] Prisma์ ๋ํด (0) | 2023.08.20 |
---|---|
[TIL] Tailwind CSS ์ฅ๋จ์ , ์ฐ์ต์์ (0) | 2023.08.19 |
[TIL] Next.js - SSR vs SSG vs ISR (0) | 2023.08.17 |
[TIL] Next.js - redirect์ rewrite (0) | 2023.08.16 |
[TIL] React.js์ Next.js์ ์ฐจ์ด์ - Library vs Framework, CSR vs SSR (0) | 2023.08.15 |