오늘은 next.js에서 data fetching 방식인 getStaticProps, getStaticPaths, getServerSideProps중 getStaticProps와 getServerSideProps에 대해 보도록 하겠습니다.(getStaticPaths은 거의 써본적이 없습니다;;)
구버전 next에서는 data fetching을 getInitialProps으로 진행했는데, 9.3부터는 getStaticProps, getStaticPaths, getServerSideProps으로 나뉩니다.
getStaticProps
docs정의: Fetch data at build time, pre-render for Static Generation
빌드시 고정되는 값으로, 빌드이후에는 변경이 불가합니다.
function Blog({ posts }) {
return (
<ul>
{posts.map((post) => (
<li>{post.title}</li>
))}
</ul>
)
}
export async function getStaticProps() {
const res = await fetch('https://.../posts')
const posts = await res.json()
// By returning { props: posts }, the Blog component
// will receive `posts` as a prop at build time
return {
props: {
posts,
},
}
}
export default Blog
docs example을 보면, fetch를 통해 posts값을 가져오고 posts값을 Blog component에서 <li>태그 속에서 띄워주고 있습니다.
getServerSideProps
docs정의: Fetch data on each request. pre-render for Server-side Rendering
빌드와 상관없이, 매 요청마다 데이터를 서버로부터 가져옵니다.
function Page({ data }) {
console.log(this.props.data)
//res.json()이 찍힙니다
}
export async function getServerSideProps() {
const res = await fetch(`https://.../data`)
const data = await res.json()
return { props: { data: data } }
}
export default Page
docs example을 보면, fetch를 통해 data값을 가져오고 data를 Page component에서 this.props.data로 접근이 가능한 형식입니다.
getStaticProps와 getServerSideProps은 별 차이가 없어 보이지만, 빌드 이후 변경가능여부가있으니주의해주세요
요약:
@ getStaticProps: static data를 위해 data fetching
@ getServerSideProps: ssr을 위해 data fetching
@ getStaticProps와 getServerSideProps의 차이는 빌드이후에도 data 변경가능 여부입니다.
읽기 어려우시면 아래 링크를 참조해주세요:
'개발 > react 생태계' 카테고리의 다른 글
styled component in next.js (0) | 2020.07.16 |
---|---|
Unhandled Runtime ErrorError: React.Children.only expected to receive a single React element child (0) | 2020.07.13 |
next.js란? (next.js 서버 커스터마이징) (0) | 2020.07.06 |
csr(client-side-render)와 ssr(server-side-render)차이 (0) | 2020.07.02 |
node.js와 next.js가 눈에 들어온 이유 (0) | 2020.06.29 |