>웹 프론트엔드 >JS 튜토리얼 >getStaticProps를 사용할 때 가져온 데이터가 Next.js에서 정의되지 않은 이유는 무엇입니까?

getStaticProps를 사용할 때 가져온 데이터가 Next.js에서 정의되지 않은 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-17 17:37:02280검색

Why is my fetched data undefined in Next.js when using getStaticProps?

getStaticProps를 사용한 Next.js 데이터 가져오기 문제 해결

Next.js 애플리케이션에서 getStaticProps 메서드를 구현했음에도 불구하고 다음과 같은 문제가 발생합니다. 가져온 데이터가 정의되지 않았습니다. 문제는 파일 구조와 관련이 있을 수 있으며 다음 지침에 따라 이 문제를 해결할 수 있습니다.

서버 구성 요소

최신 버전의 Next.js에서 페이지 구성 요소는 페이지 폴더(경로 설정의 기존 방법)는 서버측 데이터 가져오기를 위해 서버 구성요소를 활용합니다.

앱 디렉토리 내 데이터 가져오기

앱으로 전환한 후 디렉터리(Next.js 13에서 선호되는 접근 방식)를 사용하면 서버 구성 요소를 활용하여 구성 요소 본문 내에서 직접 데이터를 검색할 수 있습니다. 이는 지침에 대한 구체적인 설명과 함께 제공된 코드 조각에 설명된 대로 수행됩니다.

요청 쿠키 및 헤더 가져오기

import { cookies, headers } from "next/headers";

다음을 기반으로 데이터 가져오기 캐싱 옵션

// Force caching until manually invalidated, similar to getStaticProps
const staticData = await fetch(`https://...`, { cache: "force-cache" });

// Refetch on every request, similar to getServerSideProps
const dynamicData = await fetch(`https://...`, { cache: "no-store" });

// Cache with a lifespan of 10 seconds, similar to getStaticProps with revalidate
const revalidatedData = await fetch(`https://...`, {
  next: { revalidate: 10 },
});

Fetch가 아닌 데이터 요청

fetch()를 생략하고 라이브러리나 ORM을 사용하여 데이터에 직접 액세스할 수 있습니다. 이 시나리오에서는 아래 코드에 설명된 대로 Route Segment Config를 활용할 수 있습니다.

// revalidate every 10 seconds
export const revalidate = 10;

// no caching
export const dynamic = "force-dynamic";

Prisma와의 데이터베이스 상호 작용

import prisma from "./lib/prisma";

const posts = await prisma.post.findMany();

다음 사항을 준수하세요. 권장 사항을 따르면 파일 구조나 사용하는 데이터 가져오기 방법에 관계없이 Next.js 애플리케이션에서 데이터를 효과적으로 가져올 수 있습니다.

위 내용은 getStaticProps를 사용할 때 가져온 데이터가 Next.js에서 정의되지 않은 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.