💡 개발 모드에서 모든 페이지는 Static Generation 방식의 pre-rendering을 사용하지만 개발 편의성을 위해 모든 요청마다 pre-rendering된다.
getStaticProps
를 사용합니다. 여기서 가장 중요한 것은 페이지를 요청할 때가 아니라 앱 빌드 타임에 위 내용이 필요할 경우입니다.getStaticProps
기본 사용 법페이지 컴포넌트를 export 할 때 아래와 같이 async 키워드를 붙인 getStaticProps
를 같이 export 한다
export default function Home(props) {
return <>...</>
}
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: ...
}
}
getStaticProps
함수는 빌드 타임에 실행되며 함수 내부에서 외부 데이터를 가져와 페이지에 props로 전달할 수있다.getStaticProps
함수는 next.js에 해당 페이지에 데이터 디펜던시가 있으니 빌드 타임 때 해당 페이지를 pre-render할 때 데이터 의존성을 먼저 해결하라고 말해준다.getStaticProps
함수는 오직 page에서만 export 할 수 있다. 즉 pages 하위 파일에서만 사용 가능하다. 이는 리액트는 페이지가 리렌더 되기 전에 모든 필수적인 데이터를 갖고있어야 하기 때문이다.getStaticProps
함수는 요청마다 실행되며, production에서는 빌드 타임에서만 실행된다. 그러나 getStaticProps
함수가 fallback key를 반환하면 확장될 수 있다.getStaticProps
대신 getServerSideProps
를 사용해야한다.export async function getServerSideProps(context) {
return {
props: {
// props for your component
},
};
}
getServerSideProps
은 getStaticProps
과 마찬가지로 브라우저가 아닌 서버에서 실행됩니다. 때문에 getServerSideProps
의 파라미터은 context는 request에 대한 정보를 포함합니다.getServerSideProps
은 pre-render해야하는 페이지의 데이터가 요청 시 가져와야 하는 경우에만 사용해야합니다.getServerSideProps
은 getStaticProps
보다 느리고 추가 설정을 하지 않는 한 CDN에 의해 캐시되지 않습니다.