getStaticProps, getServerSideProps, getStaticPaths

aydennoteΒ·2023λ…„ 3μ›” 27일
0

Next.js

λͺ©λ‘ 보기
1/1
post-thumbnail

1. getStaticProps

πŸ•΅οΈβ€β™€οΈ getStaticProps λž€?

function Home ({data}){
 <h1>{data}</h1>
}

export async function getStaticProps(context) {
const data = await fetch('url')
  return {
    props: {data}, // will be passed to the page component as props
  }
}

λ°˜ν™˜λœ propsλ₯Ό μ‚¬μš©ν•˜μ—¬ λΉŒλ“œ μ‹œ 이 νŽ˜μ΄μ§€λ₯Ό 미리 λ Œλ”λ§ν•˜λŠ”
(Static Site Generation) κ°œλ…μ΄λ‹€.

μœ„ μ˜ˆμ‹œ μ½”λ“œ ν™ˆ νŽ˜μ΄μ§€μ—μ„œ getStaticProps ν•¨μˆ˜λ₯Ό export ν•˜κ²Œ 되면 졜초 λΉŒλ“œ μ‹œ props 데이터λ₯Ό 가지고 pre-rendering ν•œλ‹€.


❓ μ–Έμ œ μ‚¬μš©ν•˜λŠ” 게 μ’‹μ„κΉŒ?
1. νŽ˜μ΄μ§€ λ Œλ”λ§μ— ν•„μš”ν•œ 데이터가 μ‚¬μš©μž μš”μ²­μ— μ•žμ„œ λΉŒλ“œ μ‹œκ°„μ— μ‚¬μš©ν•  수 μžˆλŠ” 경우.
2. νŽ˜μ΄μ§€κ°€ SEOλ₯Ό μœ„ν•΄ 사전 λ Œλ”λ§λ˜μ–΄μ•Ό ν•˜κ³ , λΉ λ₯΄κ²Œ λ‘œλ”©λ˜μ–΄μ•Ό ν•˜λŠ” 경우.


✍ μž₯점
호좜 μ‹œ λ§ˆλ‹€ fetch ν•˜μ§€ μ•Šμ•„μ„œ getServerSideProps 보닀 μ„±λŠ₯λ©΄μ—μ„œ μ’‹λ‹€.

2. getServerSideProps

πŸ•΅οΈβ€β™€οΈ getServerSideProps λž€?

function Home ({data}){
 <h1>{data}</h1>
}

export async function getServerSideProps(context) {
const data = await fetch('url')
  return {
    props: {data}, // will be passed to the page component as props
  }
}

λ°˜ν™˜λœ propsλ₯Ό μ‚¬μš©ν•˜μ—¬ 각 μš”μ²­ μ‹œ 이 νŽ˜μ΄μ§€λ₯Ό 미리 λ Œλ”λ§ν•˜λŠ”
(Dynamic Site Generation) κ°œλ…μ΄λ‹€.

μœ„ μ˜ˆμ‹œ μ½”λ“œ ν™ˆ νŽ˜μ΄μ§€μ—μ„œ getServerSideProps ν•¨μˆ˜λ₯Ό export ν•˜κ²Œ 되면 νŽ˜μ΄μ§€ μš”μ²­ μ‹œ props 데이터λ₯Ό 가지고 pre-rendering ν•œλ‹€.


❓ μ–Έμ œ μ‚¬μš©ν•˜λŠ” 게 μ’‹μ„κΉŒ?
1. λ™μ μœΌλ‘œ νŽ˜μ΄μ§€ λ Œλ”λ§μ΄ ν•„μš”ν•œ 경우.


✍ μž₯단점
1. νŽ˜μ΄μ§€λ₯Ό μ–Έμ œλ“  μˆ˜μ •ν•  수 μžˆλ‹€.
2. 호좜 μ‹œ λ§ˆλ‹€ fetch κ°€ 이루어져 getStaticProps 보닀 μ„±λŠ₯이 떨어진닀.

3. getStaticPaths

πŸ•΅οΈβ€β™€οΈ getStaticPaths λž€?

export default function Post({ post }) {
  // Render post...
}

// pages/posts/[id].js
// Generates `/posts/1` and `/posts/2`
export async function getStaticPaths() {
  return {
    paths: [{ params: { id: '1' } }, { params: { id: '2' } }],
    fallback: false, // can also be true or 'blocking'
  }
}

// `getStaticPaths` requires using `getStaticProps`
export async function getStaticProps(context) {
  return {
    // Passed to the page component as props
    props: { post: {} },
  }
}

동적 경둜λ₯Ό 가지고 μžˆλŠ” νŽ˜μ΄μ§€κ°€ 있고, κ·Έ νŽ˜μ΄μ§€κ°€ getStaticPropsλ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ getStaticPathsλ₯Ό 톡해 λΉŒλ“œ νƒ€μž„ λ•Œ μ •μ μœΌλ‘œ λ Œλ”λ§ν•  경둜λ₯Ό μ„€μ •ν•΄μ•Ό ν•œλ‹€.

μœ„ μ˜ˆμ‹œ μ½”λ“œμ—μ„œ getStaticPaths 동적 경둜λ₯Ό μ‚¬μš©ν•˜λŠ” νŽ˜μ΄μ§€
(/posts/1, /posts/2)μ—μ„œ getStaticProps ν•¨μˆ˜λ₯Ό export ν•˜λ©΄ μ§€μ •ν•œ λͺ¨λ“  경둜λ₯Ό 사전 λ Œλ”λ§ν•œλ‹€.


❓ μ–Έμ œ μ‚¬μš©ν•˜λŠ” 게 μ’‹μ„κΉŒ?
1. 동적 경둜λ₯Ό μ‚¬μš©ν•˜κ³  νŽ˜μ΄μ§€λ₯Ό μ •μ μœΌλ‘œ 사전 λ Œλ”λ§ν•˜λŠ” 경우 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.


✍ μž₯단점
1. 동적 경둜λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 ν™œμš©μ„±μ΄ λ†’λ‹€.
2. getStaticProps 와 같이 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.(정적)

profile
κΈ°λ‘ν•˜λŠ” 개발자 Ayden μž…λ‹ˆλ‹€.

0개의 λŒ“κΈ€