Heim > Web-Frontend > js-Tutorial > Warum wird „getStaticProps' im neuesten Next.js-App-Verzeichnis nicht ausgeführt und undefiniert zurückgegeben?

Warum wird „getStaticProps' im neuesten Next.js-App-Verzeichnis nicht ausgeführt und undefiniert zurückgegeben?

Susan Sarandon
Freigeben: 2024-11-16 18:34:03
Original
630 Leute haben es durchsucht

Why Isn't `getStaticProps` Running and Returning Undefined in the Latest Next.js App Directory?

getStaticProps wird im neuesten Next.js nicht ausgeführt und gibt undefiniert zurück

Problembeschreibung

Beim Versuch, Daten von einem API-Endpunkt mithilfe von getStaticProps abzurufen Bei der neuesten Version von Next.js tritt bei Benutzern das Problem auf, dass die Funktion nicht ausgeführt wird und die zurückgegebenen Daten undefiniert sind. Dies führt zu einem Fehler beim Zuordnen der Daten, da die Eigenschaften von undefiniert nicht gelesen werden können.

Lösung

getStaticProps wird zwar zum Abrufen von Daten auf dem Server verwendet, ist jedoch nur auf Seitenkomponenten innerhalb von anwendbar Dies ist die traditionelle Methode zum Einrichten von Routen in Next.js.

In modernen Next.js-Anwendungen, die das App-Verzeichnis verwenden, bieten Serverkomponenten einen flexibleren Ansatz für den Datenabruf. Hier ist ein Codeausschnitt, der zeigt, wie Daten direkt im Komponentenkörper abgerufen werden:

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

export default async function Component({ params, searchParams }) {
  const staticData = await fetch("https://...", { cache: "force-cache" });
  const dynamicData = await fetch("https://...", { cache: "no-store" });
  const revalidatedData = await fetch("https://...", { next: { revalidate: 10 } });

  return "...";
}
Nach dem Login kopieren

Mit diesem Code können Sie das Caching-Verhalten der abgerufenen Daten steuern, einschließlich erzwungener Caching, keiner Caching oder erneuter Validierung nach einem angegebenen Zeitraum.

Alternativ können Sie Daten auch abrufen, ohne fetch(); Verwenden Sie Bibliotheken von Drittanbietern oder fragen Sie Ihre Datenbank direkt mit einem ORM ab. In diesem Fall können Sie Route Segment Config verwenden:

async function getPosts() {
  const posts = await prisma.post.findMany();
  return posts;
}

export default async function Page() {
  const posts = await getPosts();
  // ...
}
Nach dem Login kopieren

Mit diesem Ansatz können Sie das Caching-Verhalten der abgerufenen Daten über die Eigenschaft „revalidate“ festlegen oder das Caching mithilfe der dynamischen Eigenschaft vollständig deaktivieren.

Das obige ist der detaillierte Inhalt vonWarum wird „getStaticProps' im neuesten Next.js-App-Verzeichnis nicht ausgeführt und undefiniert zurückgegeben?. 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