Heim > Web-Frontend > js-Tutorial > Hauptteil

Warum sind meine abgerufenen Daten in Next.js undefiniert, wenn ich getStaticProps verwende?

Linda Hamilton
Freigeben: 2024-11-17 17:37:02
Original
168 Leute haben es durchsucht

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

Fehlerbehebung beim Abrufen von Next.js-Daten mit getStaticProps

Trotz der Implementierung der getStaticProps-Methode in Ihrer Next.js-Anwendung stoßen Sie auf ein Problem, bei dem Die abgerufenen Daten sind undefiniert. Das Problem hängt wahrscheinlich mit Ihrer Dateistruktur zusammen und die folgende Anleitung wird dieses Problem beheben.

Serverkomponenten

In neueren Versionen von Next.js sind Seitenkomponenten enthalten Der Seitenordner (die traditionelle Methode zum Einrichten von Routen) nutzt Serverkomponenten für den serverseitigen Datenabruf.

Datenabruf innerhalb des App-Verzeichnisses

Nach dem Übergang zur App Verzeichnis (der bevorzugte Ansatz für Next.js 13) können Sie Serverkomponenten nutzen, um Daten direkt im Komponentenkörper abzurufen. Dies wird wie im bereitgestellten Codeausschnitt dargestellt erreicht, mit spezifischen Kommentaren zur Orientierung.

Anforderungscookies und Header importieren

import { cookies, headers } from "next/headers";
Nach dem Login kopieren

Abrufen von Daten basierend auf Caching-Optionen

// 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 },
});
Nach dem Login kopieren

Nicht-Abrufdatenanforderung

Sie können fetch() weglassen und direkt über Bibliotheken oder ORM auf Daten zugreifen. In diesem Szenario können Sie Route Segment Config verwenden, wie im folgenden Code gezeigt:

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

// no caching
export const dynamic = "force-dynamic";
Nach dem Login kopieren

Datenbankinteraktion mit Prisma

import prisma from "./lib/prisma";

const posts = await prisma.post.findMany();
Nach dem Login kopieren

Indem Sie diese befolgen Empfehlungen können Sie effektiv Daten in Ihrer Next.js-Anwendung abrufen, unabhängig von der Dateistruktur oder Datenabrufmethode, die Sie verwenden.

Das obige ist der detaillierte Inhalt vonWarum sind meine abgerufenen Daten in Next.js undefiniert, wenn ich getStaticProps verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage