getStaticProps

getStaticProps(Static Generation)
ํ์ด์ง ์ปดํฌ๋ํธ์์ ์ด๋ฐ ํจ์๋ฅผ exportํด์ฃผ๋ฉด ๋น๋ ํ์์ HTML์ ์์ฑํด์ค๋ค. ์ด๋ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ context์๋ ๋ค์๊ฐ๋ค์ด ๋ค์ด์๋ค.
params- ํ์ด์ง์ ๋ผ์ฐํ ๊ณผ ๊ด๋ จ๋ ๊ฐ๋ค์ด ๋ค์ด์๋ค. ๋ง์ฝ ํ์ผ๋ช ์ด[id].js๊ณ ๋ผ์ฐํ ์ด/1์ธ ๊ฒฝ์ฐ params์๋{ id: 1 }์ด ๋ค์ด์๊ฒ๋๋ค.preview- ํ์ด์ง๊ฐ preview๋ชจ๋์ธ ๊ฒฝ์ฐ true๋ค.previewData-setPreviewDataํจ์์ ์ํด ์ค์ ๋ preview data๋ฅผ ํฌํจํ๋ค.
๊ฐ๋จํ ์์
๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ค๋ getStaticProps๋ฅผ ํ์ฉํ ์ ์๋ค.
์ธ์ getStaticProps๋ฅผ ์ฌ์ฉํด์ผ ํ๋์?
ํ์ด์ง๋ฅผ ๋น๋ ํ์์ ๋ฏธ๋ฆฌ ์์ฑํด๋ ๊ด์ฐฎ์ ๊ฒฝ์ฐ (๊ผญ ์ ์ ์ ์์ฒญ์ด ์์ด๋ ๋ฏธ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๊ตฌํด์ฌ ์ ์์๋)
Headless CMS๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋
๋ฐ์ดํฐ๊ฐ ์บ์ฑ๋์ด๋ ์๊ด ์์ ๋
ํ์ด์ง๊ฐ ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋ ๋๋ง ๋์ด์ผ ํ ๋
getStaticProps๋ HTML๊ณผ JSON์ ์์ฑํ๊ธฐ ๋๋ฌธ์ CDN์ ์ํด ์บ์ฑ๋์ด ๋งค์ฐ ๋น ๋ฆ
๋๋ค.
ํ์
์คํฌ๋ฆฝํธ์์ getStaticProps ์ฌ์ฉํ๊ธฐ
GetStaticProps Type์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ง์ฝ getStaticProps์์ ๋ฆฌํดํ๋ Props์ ํ์
์ ์ถ๋ก ํด์ ์ฌ์ฉํ ๊ฒฝ์ฐ InferGetStaticPropsType๋ฅผ ์ฌ์ฉํ๋ผ.
์ด๊ฒ์ ์ฌ์ฉํ๋ฉด getStaticProps ํจ์๊ฐ ๋ฆฌํดํ๋ ๊ฐ์ ํ์ ์ ์ถ๋ก ํ ์ ์๋ค.
์๋ HTML ํ์ด์ง ์ฌ์์ฑ (Incremental Static Regeneration)
getStaticProps์ ์ฌ์ฉํ๋ฉด ๋น๋ ํ์์ HTML์ ๋ฏธ๋ฆฌ ์์ฑํด๋ ์ ์๋ค.
Incremental Static Regeneration๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ฌ์๋, ๋ฐฑ๊ทธ๋ผ์ด๋์์ ํ์ด์ง๋ฅผ ์ฌ์์ฑํ๋ค.
์ด์ ๋ธ๋ก๊ทธ์ ๊ธ๋ค์ 1์ด์ ํ๋ฒ์ฉ ํ์ธ๋๋ค. ๋ง์ฝ ์๋ก์ด ๊ธ์ด ์ถ๊ฐ ๋๋ค๋ฉด ๊ฑฐ์ ์ฆ์ getStaticProps๊ฐ ์ฌ์คํ๋์ด ์๋ก์ด ํ์ด์ง๊ฐ ์์ฑ๋ ๊ฒ์ด๋ค.
์๋ ํ์ด์ง ์ฌ์์ฑ์ ํฐ ๊ท๋ชจ์ ์ฑ์์๋ ์ ์๋ํ๋ค.
ํ์ด์ง๊ฐ ์ง์์ ์ผ๋ก ๋น ๋ฅด๊ฒ ๋ ๋๋ง๋๋ค. (static HTML์ด๊ธฐ ๋๋ฌธ์)
๋คํธ์ํฌ๊ฐ ๋์ด์ ธ๋ ์ด์ ์ ๋ฐ์๋์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค ์ ์๋ค. (๋ธ๋ผ์ฐ์ ์ ์บ์ฑ๋๊ธฐ ๋๋ฌธ์)
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐฑ์๋ ์๋ฒ์ ์์ฒญ์ ์กฐ๊ธ๋ง ๋ณด๋ธ๋ค. ๋ชจ๋ ํ์ด์ง๋ ํ๋ฒ์ ์ฌ์์ฑ๋๋ค. (๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ ๋ ๋ ๋ฑ ํ๋ฒ๋ง ์์ฒญํ๋ค.)
ํ์ผ์ ์ฝ์๋ process.cwd()๋ฅผ ์ฌ์ฉํ๋ผ.
getStaticProps์์ ๋ฐฑ์๋ API ํธ์ถ ๋ฟ ์๋๋ผ ํ์ผ์์คํ
์๋ ์ ๊ทผํ ์ ์๋ค. ํ์ง๋ง ํ์ผ์ ํ๊ฒฝ๋ก๋ฅผ ๋ชจ๋ ์
๋ ฅํด์ฃผ์ด์ผํ๋ค.
Next.js๊ฐ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ ๋ ์๋ก ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ์ ์๋ ํ์ผ์ ๋น๋ํ๊ธฐ ๋๋ฌธ์ __dirname์ ์ฌ์ฉํ๋ฉด ์ค๋ฅ๊ฐ ๋๋ค.
๋์ ์ process.cwd()๋ฅผ ์ฌ์ฉํ๋ฉด Next.js๊ฐ ์คํ๋๊ณ ์๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
๊ธฐ์ ์ ์ธ ๋ํ
์ผํ ๋ด์ฉ๋ค
๋น๋ํ์์๋ง ์คํ๋๋ค.
getStaticProps๊ฐ ๋น๋ํ์์ ์คํ๋๊ธฐ ๋๋ฌธ์ ์ ์ ์ ์์ฒญ์ด ์์ด์ผ๋ง ํ๋ ์๋ ์์ฑ๋ค์ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ๋ค.
request๊ฐ์ฒด์ query
HTTP headers์ ์์ฑ๋ค
์๋ฒ์ฝ๋๋ฅผ ์ง์ ์์ฑํ๋ผ.
getStaticProps๋ ์ค์ง ์๋ฒ์์๋ง ์คํ๋๋ค. ํด๋ผ์ด์ธํธ์์๋ ์ ๋ ์คํ๋์ง ์๋๋ค. getStaticProps๋ ๋ฒ๋ค์ ํฌํจ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ๋ก๋ ๋ด๋ ค๊ฐ์ง ์๋๋ค. getServerSideProps๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค.

์ผ์ชฝ์ด ์๋ ์ฝ๋๊ณ ์ค๋ฅธ์ชฝ์ ํด๋ผ์ด์ธํธ์ ๋ฒ๋ค๋ก ๋ด๋ ค๊ฐ ์ฝ๋์ด๋ค. getServerSideProps๊ฐ ์ ๊ฑฐ๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
HTML๊ณผ JSON์ ์ ์ ์ผ๋ก ์์ฑํ๋ค.
๋น๋ํ์์ getStaticProps๊ฐ ์คํ๋๋ฉด Next.js๋
ํ์ด์ง ์ปดํฌ๋ํธ๋ฅผ HTML๋ก ๋ง๋ค๊ณ
getStaticProps์์ ๋ฆฌํด๋ ๊ฐ์ JSONํ์ผ๋ก ๋ง๋ ๋ค.
์ด JSON์ ํด๋ผ์ด์ธํธ์์ ๋ผ์ฐํ ์ ํ ๋ ์ฌ์ฉ๋๋ค.(next/link, next/router)
๋ฏธ๋ฆฌ ๋ ๋๋ง๋ ํ์ด์ง๋ฅผ ํด๋ผ์ด์ธํธ ๋ผ์ฐํ
์ผ๋ก ์ ๊ทผํ๊ฒ ๋ ๊ฒฝ์ฐ Next.js๋ 2๋ฒ์์ ๋ง๋ JSONํ์ผ์ ๊ฐ์ ธ์์ ํ์ด์ง ์ปดํฌ๋ํธ์ Props๋ก ์ฌ์ฉํ๋ค. ์ด ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง๋ก getStaticProps๋ ํด๋ผ์ด์ธํธ์์ ์คํ๋์ง ์๋๋ค. getStaticProps์ ์ํด ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ง JSON ํ์ผ์ ํ์ฉํ ๋ฟ์ด๋ค. getStaticProps๋ ์ค์ง ๋น๋ํ์์๋ง ์คํ๋๋ค๋ ๊ฑธ ๋ช
์ฌํ์.
ํ์ด์ง ์ปดํฌ๋ํธ์์๋ง ์ฌ์ฉํ ์ ์๋ค.
getStaticProps๋ ํ์ด์ง ์ปดํฌ๋ํธ์์๋ง export๋์ด์ผ ํ๋ค.
ํ์ด์ง๊ฐ ๋ ๋๋ง๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์ค๋น๋์ด์ผ๋ง ๋ฆฌ์กํธ๊ฐ ์ ๋๋ก ๋ ๋๋ง ๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ๋ฐ๋ชจ๋์์๋ ๋ชจ๋ ์์ฒญ์ ์ํด ์คํ๋๋ค.
next dev๋ฅผ ํตํด next.js๋ฅผ ๊ฐ๋ฐ๋ชจ๋์์ ์คํํ๊ฒ ๋๋ฉด getStaticProps๋ ๋ชจ๋ ์์ฒญ์ ์ํด ์คํ๋๋ค. ์์์ ๋น๋ ํ์์๋ง ์คํ๋๋ค๊ณ ํ๊ฒ์ production๋ชจ๋์ผ๋ ๊ทธ๋ ๋ค๋ ๋ง์ด๋ค.
Preview Mode
ํ๋ฆฌ๋ทฐ ๋ชจ๋๋ ๊ณ ๊ธ ๊ธฐ๋ฅ์ด๋ฏ๋ก ์ด ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ๋ผ.
Last updated
Was this helpful?