getStaticProps
Das Exportieren einer Funktion namens getStaticProps
führt zu einer Vorab-Renderung (Pre-Rendering) einer Seite zur Build-Zeit unter Verwendung der von der Funktion zurückgegebenen Props:
Sie können Module im Top-Level-Scope für die Verwendung in getStaticProps
importieren. Die verwendeten Importe werden nicht für die Client-Seite gebündelt. Das bedeutet, Sie können serverseitigen Code direkt in getStaticProps
schreiben, einschließlich dem Abrufen von Daten aus Ihrer Datenbank.
Context-Parameter
Der context
-Parameter ist ein Objekt mit folgenden Schlüsseln:
Name | Beschreibung |
---|---|
params | Enthält die Routenparameter für Seiten mit dynamischen Routen. Zum Beispiel, wenn der Seitenname [id].js ist, sieht params wie { id: ... } aus. Dies sollte zusammen mit getStaticPaths verwendet werden, was später erklärt wird. |
preview | (Veraltet für draftMode ) preview ist true , wenn sich die Seite im Preview Mode befindet, andernfalls false . |
previewData | (Veraltet für draftMode ) Die durch setPreviewData festgelegten Preview-Daten. |
draftMode | draftMode ist true , wenn sich die Seite im Draft Mode befindet, andernfalls false . |
locale | Enthält die aktive Locale (falls aktiviert). |
locales | Enthält alle unterstützten Locales (falls aktiviert). |
defaultLocale | Enthält die konfigurierte Standard-Locale (falls aktiviert). |
revalidateReason | Gibt den Grund für den Aufruf der Funktion an. Kann einer der folgenden sein: "build" (wird zur Build-Zeit ausgeführt), "stale" (Revalidate-Zeitraum abgelaufen oder Ausführung im Entwicklungsmodus), "on-demand" (ausgelöst durch On-Demand Revalidation) |
Rückgabewerte von getStaticProps
Die getStaticProps
-Funktion sollte ein Objekt zurückgeben, das entweder props
, redirect
oder notFound
enthält, gefolgt von einer optionalen revalidate
-Eigenschaft.
props
Das props
-Objekt ist ein Schlüssel-Wert-Paar, wobei jeder Wert von der Seitenkomponente empfangen wird. Es sollte ein serialisierbares Objekt sein, sodass alle übergebenen Props mit JSON.stringify
serialisiert werden können.
revalidate
Die revalidate
-Eigenschaft gibt die Anzahl der Sekunden an, nach der eine Seiten-Neugenerierung erfolgen kann (Standardwert ist false
oder keine Revalidierung).
Erfahren Sie mehr über Inkrementelle Statische Regeneration (ISR).
Der Cache-Status einer Seite, die ISR nutzt, kann durch Lesen des Wertes des x-nextjs-cache
-Response-Headers bestimmt werden. Die möglichen Werte sind:
MISS
- Der Pfad ist nicht im Cache (tritt höchstens einmal beim ersten Besuch auf)STALE
- Der Pfad ist im Cache, aber die Revalidate-Zeit wurde überschritten und wird im Hintergrund aktualisiertHIT
- Der Pfad ist im Cache und die Revalidate-Zeit wurde nicht überschritten
notFound
Der notFound
-Boolean ermöglicht es der Seite, einen 404
-Status und eine 404-Seite zurückzugeben. Mit notFound: true
gibt die Seite einen 404
zurück, selbst wenn zuvor eine erfolgreich generierte Seite existierte. Dies dient zur Unterstützung von Anwendungsfällen wie nutzergenerierten Inhalten, die vom Autor entfernt wurden. Beachten Sie, dass notFound
dem gleichen revalidate
-Verhalten folgt, wie hier beschrieben.
Gut zu wissen:
notFound
ist für den Modusfallback: false
nicht erforderlich, da nur Pfade, die vongetStaticPaths
zurückgegeben werden, vorgerendert werden.
redirect
Das redirect
-Objekt ermöglicht die Weiterleitung zu internen oder externen Ressourcen. Es sollte die Form { destination: string, permanent: boolean }
haben.
In seltenen Fällen müssen Sie möglicherweise einen benutzerdefinierten Statuscode für ältere HTTP
-Clients festlegen, um eine korrekte Weiterleitung zu gewährleisten. In diesen Fällen können Sie die statusCode
-Eigenschaft anstelle der permanent
-Eigenschaft verwenden, aber nicht beide. Sie können auch basePath: false
ähnlich wie Weiterleitungen in next.config.js
setzen.
Wenn die Weiterleitungen zur Build-Zeit bekannt sind, sollten sie stattdessen in next.config.js
hinzugefügt werden.
Dateien lesen: Verwenden Sie process.cwd()
Dateien können direkt aus dem Dateisystem in getStaticProps
gelesen werden.
Dazu müssen Sie den vollständigen Pfad zu einer Datei erhalten.
Da Next.js Ihren Code in ein separates Verzeichnis kompiliert, können Sie __dirname
nicht verwenden, da der zurückgegebene Pfad vom Pages Router abweicht.
Stattdessen können Sie process.cwd()
verwenden, das Ihnen das Verzeichnis zurückgibt, in dem Next.js ausgeführt wird.
Versionsverlauf
Version | Änderungen |
---|---|
v13.4.0 | App Router ist nun stabil mit vereinfachtem Data Fetching |
v12.2.0 | On-Demand Inkrementelle Statische Regeneration ist stabil. |
v12.1.0 | On-Demand Inkrementelle Statische Regeneration hinzugefügt (Beta). |
v10.0.0 | locale , locales , defaultLocale und notFound -Optionen hinzugefügt. |
v10.0.0 | fallback: 'blocking' -Rückgabeoption hinzugefügt. |
v9.5.0 | Stabile Inkrementelle Statische Regeneration (ISR) |
v9.3.0 | getStaticProps eingeführt. |