Heim > Web-Frontend > js-Tutorial > Wie kann ich Daten in Next.js 13 effizient abrufen, um undefinierte Daten zu vermeiden?

Wie kann ich Daten in Next.js 13 effizient abrufen, um undefinierte Daten zu vermeiden?

DDD
Freigeben: 2024-11-19 02:37:02
Original
619 Leute haben es durchsucht

How can I Fetch Data Efficiently in Next.js 13 to Avoid Undefined Data?

Hindernis beim Datenabruf in Next.js: Auflösen undefinierter Daten

Next.js bietet mehrere Methoden für den serverseitigen Datenabruf, darunter getStaticProps und getServerSideProps. Diese Methoden sind jedoch in erster Linie für Seitenkomponenten innerhalb des Seitenordners gedacht. In Next.js 13 entstand ein neues Konzept namens Server Components, das den Datenabruf direkt innerhalb des Komponentenkörpers ermöglicht.

Server Components: Eine umfassende Lösung

Server Components bieten einen flexibleren Ansatz zum Datenabruf, sodass Entwickler:

  • Daten auf dem Server abrufen können, mit der Option, die Ergebnisse zwischenzuspeichern, ähnlich wie getStaticProps.
  • Daten bei jeder Anfrage abrufen, ähnlich wie bei getServerSideProps.
  • Geben Sie eine benutzerdefinierte Revalidierungsstrategie an.

Um Serverkomponenten zu verwenden, definieren Sie Ihre Komponente als Standard Export einer Datei in das App-Verzeichnis. Der Datenabruf kann innerhalb des Komponentenkörpers mit den folgenden Methoden durchgeführt werden:

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

export default async function Component({ params, searchParams }) {
  // Cached until manually invalidated
  const staticData = await fetch(`https://...`, { cache: "force-cache" });

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

  // Revalidated with a 10-second lifetime
  const revalidatedData = await fetch(`https://...`, { next: { revalidate: 10 } });
}
Nach dem Login kopieren

Alternative Ansätze

Zusätzlich zu Serverkomponenten können Sie Daten auch mithilfe von Bibliotheken abrufen oder direkt mit einer Datenbank interagieren unter Verwendung eines ORM. In solchen Szenarien können Sie Route Segment Config nutzen:

// layout.js OR page.js OR route.js

import prisma from "./lib/prisma";

// Caching options
export const revalidate = 10; // Revalidate every 10s
// OR
export const dynamic = "force-dynamic"; // No caching

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

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

Durch die Verwendung von Serverkomponenten oder alternativen Ansätzen können Sie Daten effizient auf dem Server in Next.js abrufen und so das Problem undefinierter Daten beheben, die beim Verlassen auftreten ausschließlich auf getStaticProps.

Das obige ist der detaillierte Inhalt vonWie kann ich Daten in Next.js 13 effizient abrufen, um undefinierte Daten zu vermeiden?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage