step 4와 이어집니다.
Request Time 에 Fetching Data를 하기 위해선 앞서 설명한 Server-side Rendering 을 사용해야 합니다.
정적 생성 방법때는 getStaticProps를 사용했지만 Server-side Rendering 을 하기위해선 getServerSideProps 를 export 해야합니다.
getServerSideProps 는 다음과 같은 형식으로 사용됩니다.
export async function getServerSideProps(context) {
return {
props: {
// props for your component
}
}
}
우리 예제에서는 따로 사용하는 페이지가 없으니 사용 방식만 일단 알아두고 다음에 사용해 봅시다.
요청 시간에 데이터를 가져와야 하는 페이지를 미리 렌더링해야 하는 경우에만 getServerSideProps를 사용해야 하는 것을 명심하세요.
데이터를 pre-rendering 할 필요가 없을 때는 Client-side rendering 을 사용합니다. 이 방식은 다음과 같이 진행 됩니다.
이 접근 방식은 사용자 대시보드 페이지에 적합합니다. 대시보드는 사용자별 개인 페이지이므로 SEO는 관련이 없으며 페이지를 미리 렌더링할 필요가 없습니다. 데이터는 자주 업데이트되므로 요청 시간 데이터를 가져와야 합니다.
Next.js의 팀은 SWR이라는 데이터 fetching을 위한 React hook을 만들었습니다.
클라이언트 사이드에서 데이터를 가져오는 경우 적극 권장한다고 합니다. 이 훅은 caching, revalidation, focus tracking, refetching on interval 등등을 핸들링 할 수 있습니다.
import useSWR from 'swr'
function Profile() {
const { data, error } = useSWR('/api/user', fetch)
if (error) return <div>failed to load</div>
if (!data) return <div>loading...</div>
return <div>hello {data.name}!</div>
}
다음과 같이 사용 할 수 있습니다.
더 많은 정보는 https://swr.vercel.app/ 이곳에서 확인 할 수 있습니다.