개발/Next.js
[Docs] 정적 생성(Static Generation)
yoosmg
2023. 5. 10. 07:26
정적 생성은 데이터 유무에 관계없이 수행할 수 있다.
외부 데이터를 페치 할 필요가 없는 경우, 앱은 빌드 시점에 아래 그림처럼 자동으로 정적 생성될 것이다.
하지만 외부 데이터를 먼저 페치 하지 않으면 HTML을 렌더링 할 수 없는 경우도 있다.
빌드 시점에 파일 시스템에 액세스하거나, 외부 API를 페치 하거나, 혹은 데이터베이스를 쿼리해야 하는 경우다.
이런 경우에는 어떻게 해야할까?
getStaticProps를 사용하여 정적 생성하기
페이지 컴포넌트를 익스포트 할 때 getStaticProps라는 비동기 함수를 함께 익스포트해주면 된다.
그러면 프로덕션 빌드 시점에 이것이 실행되고 내부에서 외부 데이터를 페치 하여 페이지에 props로 보낸다.
export default function Home(props) { ... }
export async function getStaticProps() {
// Get external data from the file system, API, DB, etc.
const data = ...
// The value of the `props` key will be
// passed to the `Home` component
return {
props: ...
}
}
본 메서드를 사용하는 것은 다음과 같은 의미를 지닌다.
- 이 페이지에는 몇 가지 데이터 종속성이 있다.
- 빌드 시 이 페이지를 프리렌더링하기에 앞서 종속성을 먼저 해결하겠다.