โœ๏ธ What I Learned/TIL

[TIL] Next.js 13 - getStaticProps, getStaticPaths (feat. 12๋ฒ„์ „์—์„œ์˜ getServerSideProps)

2023. 8. 18. 22:26
๋ชฉ์ฐจ
  1. 1. 12๋ฒ„์ „ : getServerSideProps
  2. 1) getServerSideProps ์ฝ”๋“œ ์˜ˆ์‹œ
  3. 2. 13๋ฒ„์ „ : getStaticProps, getStaticPaths
  4. 1) 13๋ฒ„์ „์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง
  5. ์ฐธ๊ณ  ์‚ฌ์ดํŠธ

๐Ÿ’ก TIL 20230818 - Next.js 13 - getStaticProps, getStaticPaths (feat. 12๋ฒ„์ „์—์„œ์˜ getServerSideProps)


1. 12๋ฒ„์ „ : getServerSideProps

Next.js 12๋ฒ„์ „์—์„œ๋Š” Data Fetching์‹œ pre-rendering ํ•˜๋ ค๋ฉด getServerSideProps ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค.

 

1) getServerSideProps ์ฝ”๋“œ ์˜ˆ์‹œ

import Seo from "../../components/Seo";
import { useRouter } from "next/router";

export default function Detail({ params }) {
  const router = useRouter();
  const [title, id] = params || [];
  return (
    <div>
      <Seo title={title} />
      <h4>{title}</h4>
    </div>
  );
}

export function getServerSideProps({ params: { params } }) {
  return {
    props: {
      params,
    },
  };
}

๋…ธ๋งˆ๋“œ์ฝ”๋” Next.js ๋ฌด๋ฃŒ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉด์„œ, ๊ฐ•์˜์—์„œ ์ง„ํ–‰ํ–ˆ๋˜ Next.js 12๋ฒ„์ „ ์ฝ”๋“œ์ด๋‹ค. ์œ„ ์ฝ”๋“œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋์œผ๋ฏ€๋กœ, ์ด ์ฝ”๋“œ๋ฅผ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ+Next.js 13๋ฒ„์ „์œผ๋กœ ์ˆ˜์ •ํ•ด์„œ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค.

 

 


2. 13๋ฒ„์ „ : getStaticProps, getStaticPaths

Next.js 13๋ฒ„์ „์—์„œ๋Š” getStaticProps, getStaticPaths ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Fetching data๋ฅผ pre-render ํ•  ์ˆ˜ ์žˆ๋‹ค.

1) 13๋ฒ„์ „์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง

์œ„์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ+12๋ฒ„์ „ ์ฝ”๋“œ์—์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ+13๋ฒ„์ „์œผ๋กœ ์ˆ˜์ •ํ•œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

import Seo from "@/components/Seo";
import { GetStaticPropsContext } from "next";
// import { useRouter } from "next/router";
import React from "react";

interface DetailProps {
  params: [string, string];
}

const Detail = ({ params }: DetailProps) => {
  // router.query๋ฅผ ๋ณด๋ฉด ํŒŒ์ผ๋ช…์—์„œ ์„ค์ •ํ•ด์ค€ movieId๊ฐ€ key๊ฐ’์œผ๋กœ ๋“ค์–ด๊ฐ€์žˆ์Œ
  const [title, id] = params || [];
  return (
      <div>
        <Seo title={title} />
        <h4>{title}</h4>
      </div>
  );
};

export default Detail;

interface ParamsProps {
  params: {
    params: GetStaticPropsContext
  }
};

// 1. URL์— ๋“ค์–ด์žˆ๋Š” ์˜ํ™”์ œ๋ชฉ์„ ์‚ฌ์šฉํ•˜์—ฌ SEO ์ตœ์ ํ™”
// 2. ์œ ์ €๊ฐ€ ์ ‘์†ํ•˜๊ธฐ ์ „์— <title></title> ์ œ๋ชฉ์„ ๋ณ€๊ฒฝํ•ด์„œ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ
export const getStaticProps = async ({params: { params }}: ParamsProps) => {
  return {
      props: { params },
  };
};

export const getStaticPaths = async () => {
  return {
    paths: [], // ๋™์  ๊ฒฝ๋กœ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋นˆ ๋ฐฐ์—ด๋กœ ์„ค์ •
    fallback: 'blocking', // ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ์˜ ์ ‘๊ทผ์€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์—์„œ ๋Œ€๊ธฐ
  };
};

 

 


์ฐธ๊ณ  ์‚ฌ์ดํŠธ

๋…ธ๋งˆ๋“œ์ฝ”๋” - NextJS ์‹œ์ž‘ํ•˜๊ธฐ

 

 

 

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'โœ๏ธ What I Learned > TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TIL] Prisma์— ๋Œ€ํ•ด  (0) 2023.08.20
[TIL] Tailwind CSS ์žฅ๋‹จ์ , ์—ฐ์Šต์˜ˆ์ œ  (0) 2023.08.19
[TIL] Next.js - SSR vs SSG vs ISR  (0) 2023.08.17
[TIL] Next.js - redirect์™€ rewrite  (0) 2023.08.16
[TIL] React.js์™€ Next.js์˜ ์ฐจ์ด์  - Library vs Framework, CSR vs SSR  (0) 2023.08.15
  1. 1. 12๋ฒ„์ „ : getServerSideProps
  2. 1) getServerSideProps ์ฝ”๋“œ ์˜ˆ์‹œ
  3. 2. 13๋ฒ„์ „ : getStaticProps, getStaticPaths
  4. 1) 13๋ฒ„์ „์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง
  5. ์ฐธ๊ณ  ์‚ฌ์ดํŠธ
'โœ๏ธ What I Learned/TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [TIL] Prisma์— ๋Œ€ํ•ด
  • [TIL] Tailwind CSS ์žฅ๋‹จ์ , ์—ฐ์Šต์˜ˆ์ œ
  • [TIL] Next.js - SSR vs SSG vs ISR
  • [TIL] Next.js - redirect์™€ rewrite
Jiwon()
Jiwon()
Jiwon()
jiwondev.log
Jiwon()
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ์ „์ฒด๋ณด๊ธฐ (86)
    • โœ๏ธ What I Learned (52)
      • TIL (41)
      • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… (8)
    • ๐Ÿ’ป Programming (31)
      • Algorithm (12)
      • React (1)
      • JS, TS (7)
      • HTML, CSS (7)
      • ๊ธฐํƒ€ (4)
    • ๐Ÿ–Š๏ธ ์ผ๊ธฐ (3)
      • ์ผ์ƒ๊ธฐ๋ก (2)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„
  • HTML
  • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ
  • reduxtoolkit
  • ํด๋ฆฐ์ฝ”๋“œ
  • SSR
  • ์›น๊ฐœ๋ฐœ
  • Prisma
  • ChatGPT
  • slice
  • Redux
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…
  • Til
  • Firebase
  • nextjs
  • ํ”„๋ก ํŠธ์—”๋“œ
  • css
  • TypeScript
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • tailwindcss
  • React
  • ์ฝ”๋”ฉ
  • javascript
  • transition
  • Next.js
  • React-Hook-Form
  • ๋ฆฌ์•กํŠธ
  • recoil

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
Jiwon()
[TIL] Next.js 13 - getStaticProps, getStaticPaths (feat. 12๋ฒ„์ „์—์„œ์˜ getServerSideProps)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.