Next.js의 데이터 페칭 방식

Frontend/Next.js

Pages Router

페이지 라우터에서는 사전 렌더링 과정 중 Next.js 서버 사이드에서 다른 백엔드 서버나 데이터베이스로부터 데이터를 페칭한다.

작동 원리

페이지 역할을 하는 파일 안에 서버 측에서만 실행되는 특수 함수를 사용하여 데이터를 직접 페칭하며, 페칭한 데이터는 페이지 컴포넌트에 props로 전달한다.

export async function getServerSideProps() {
  const res = await fetch('https://api.example.com/data');
  const data = await res.json();

  return {
    props: { data },
  }
}

export default function Page({ data }) {
  return <div>{data}</div>;
}

특수 함수와 렌더링 방식

 

Next.js 페이지 라우터의 렌더링 방식

웹 애플리케이션의 렌더링 방식과 Next.js웹 애플리케이션을 개발할 때 가장 중요한 선택 중 하나는 렌더링 방식이다.각 방식은 고유한 장단점을 가지고 있으며, Next.js를 통해 이러한 방식들을 유

devmark.tistory.com

  • getServerSideProps: SSR
  • getStaticProps: SSR, ISR
  • getStaticPaths: 동적 경로를 갖는 페이지의 정적 생성

 

이유와 한계점

  • 페이지 라우터에는 서버 컴포넌트 개념이 없어 모든 컴포넌트가 클라이언트 컴포넌트로 동작
  • 컴포넌트가 서버와 브라우저에서 각각 한 번씩 실행됨
  • 컴포넌트 내 데이터 페칭 로직은 서버와 브라우저 양쪽에서 실행되므로, 서버 측에서만 실행하기 위해 특수 함수가 필요
  • 데이터가 페이지 컴포넌트에만 전달되어 하위 컴포넌트로의 전달이 복잡해짐 (props drilling 또는 Context API 사용 필요)

 

App Router

앱 라우터에서는 서버 컴포넌트의 도입으로 데이터 페칭 방식이 크게 개선되었다.

작동 원리

서버 컴포넌트 내에서 직접 데이터 페칭이 가능하기 때문에 특수 함수가 필요하지 않으며, 컴포넌트 내에서 async/await 사용이 가능하다.

export default async function Page() {
  const res = await fetch('https://api.example.com/data');
  const data = await res.json();

  return <div>{data}</div>;
}

 

장점과 개선사항

  • 서버 컴포넌트는 서버에서만 동작하므로 데이터 페칭 로직이 클라이언트에 노출되지 않음
  • 컴포넌트 내부에서 직접 데이터를 페칭하고 사용할 수 있어 구조가 단순해짐
  • 페이지 컴포넌트에서 하위 컴포넌트로 데이터를 전달할 필요가 없어짐
  • 복잡한 컴포넌트 구조에서도 효율적인 데이터 페칭 구현 가능

'Frontend > Next.js' 카테고리의 다른 글

풀 라우트 캐시 (Full Route Cache)  (0) 2025.11.13
데이터 캐시와 리퀘스트 메모이제이션  (0) 2025.11.13
React Server Component  (0) 2025.11.13
Next.js 검색 엔진 최적화 (SEO)  (0) 2025.11.13
Next.js 페이지 라우터의 렌더링 방식  (0) 2025.11.13
'Frontend/Next.js' 카테고리의 다른 글
  • 풀 라우트 캐시 (Full Route Cache)
  • 데이터 캐시와 리퀘스트 메모이제이션
  • React Server Component
  • Next.js 검색 엔진 최적화 (SEO)
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157) N
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19) N
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4) N
        • 네트워크 (1) N
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    타입 좁히기
    C
    트러블 슈팅
    emotion diary
    함수 타입
    javascript
    ai 감성 일기장
    typescript
    바닐라 자바스크립트
    generic
    CS
    App Router
    앱 라우터
    Spa
    useState
    algorithm
    제네릭
    memory
    인터페이스
    Pages Router
    페이지 라우터
    알고리즘
    문자열
    Trouble Shooting
    cs50
    자료구조
    react
    Next.js
    클래스
    배열
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
Next.js의 데이터 페칭 방식
상단으로

티스토리툴바