getStaticProps
Wenn Sie eine Funktion namens getStaticProps
exportieren, wird eine Seite zur Bauzeit vorgerendert und verwendet die von der Funktion zurückgegebenen Props:
Sie können Module im Top-Level-Bereich importieren, die in getStaticProps
verwendet werden. Importierte Module werden nicht für die Clientseite gebündelt. Das bedeutet, Sie können serverseitigen Code direkt in getStaticProps
schreiben, einschließlich des Abrufens von Daten aus Ihrer Datenbank.
Context-Parameter
Der context
-Parameter ist ein Objekt mit den folgenden Schlüsseln:
Name | Beschreibung |
---|---|
params | Enthält die Routenparameter für Seiten mit dynamischen Routen. Wenn der Seitenname beispielsweise [id].js ist, sieht params wie { id: ... } aus. Dies sollten Sie zusammen mit getStaticPaths verwenden, was wir später erklären werden. |
preview | (Veraltet für draftMode ) preview ist true , wenn sich die Seite im Vorschau-Modus befindet, und false andernfalls. |
previewData | (Veraltet für draftMode ) Die Vorschau-Daten, die von setPreviewData festgelegt wurden. |
draftMode | draftMode ist true , wenn sich die Seite im Entwurfsmodus befindet, und false andernfalls. |
locale | Enthält das aktive Gebietsschema (falls aktiviert). |
locales | Enthält alle unterstützten Gebietsschemas (falls aktiviert). |
defaultLocale | Enthält das konfigurierte Standard-Gebietsschema (falls aktiviert). |
revalidateReason | Gibt einen Grund an, warum die Funktion aufgerufen wurde. Kann einer der folgenden Werte sein: "build" (zur Bauzeit ausgeführt), "stale" (Revalidierungszeitraum abgelaufen oder im Entwicklungsmodus ausgeführt), "on-demand" (ausgelöst über On-Demand-Revalidierung) |
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 denen eine Seitengenerierung erfolgen kann (standardmäßig false
oder keine Revalidierung).
Erfahren Sie mehr über Inkrementelle Statische Regenerierung.
Der Cache-Status einer Seite, die ISR nutzt, kann durch Lesen des Werts des x-nextjs-cache
-Antwortheaders bestimmt werden. Die möglichen Werte sind die folgenden:
MISS
- der Pfad ist nicht im Cache (tritt höchstens einmal beim ersten Besuch auf)STALE
- der Pfad ist im Cache, hat aber die Revalidierungszeit überschritten und wird im Hintergrund aktualisiertHIT
- der Pfad ist im Cache und hat die Revalidierungszeit nicht überschritten
notFound
Der boolesche Wert notFound
ermöglicht es der Seite, einen 404
-Status und eine 404-Seite zurückzugeben. Mit notFound: true
wird die Seite einen 404
-Status zurückgeben, auch wenn zuvor eine erfolgreich generierte Seite existierte. Dies soll Anwendungsfälle wie das Entfernen von nutzergeneriertem Inhalt durch dessen Autor unterstützen. Beachten Sie, dass notFound
das gleiche revalidate
-Verhalten wie hier beschrieben befolgt.
Hinweis:
notFound
wird nicht für denfallback: false
-Modus benötigt, da nur Pfade, die vongetStaticPaths
zurückgegeben werden, vorab gerendert werden.
redirect
Das redirect
-Objekt ermöglicht die Weiterleitung zu internen oder externen Ressourcen. Es sollte der Form { destination: string, permanent: boolean }
entsprechen.
In seltenen Fällen müssen Sie möglicherweise einen benutzerdefinierten Statuscode für ältere HTTP
-Clients zuweisen, um eine korrekte Weiterleitung zu ermöglichen. In diesen Fällen können Sie die Eigenschaft statusCode
anstelle der Eigenschaft permanent
verwenden, jedoch nicht beide. Sie können auch basePath: false
ähnlich wie bei 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 von process.cwd()
Dateien können in getStaticProps
direkt vom Dateisystem gelesen werden.
Um dies zu tun, müssen Sie den vollständigen Pfad zu einer Datei abrufen.
Da Next.js Ihren Code in ein separates Verzeichnis kompiliert, können Sie nicht __dirname
verwenden, da der zurückgegebene Pfad anders sein wird als im Pages Router.
Stattdessen können Sie process.cwd()
verwenden, der Ihnen das Verzeichnis gibt, in dem Next.js ausgeführt wird.
Versionshistorie
Version | Änderungen |
---|---|
v13.4.0 | App Router ist jetzt stabil mit vereinfachter Datenabfrage |
v12.2.0 | On-Demand Incremental Static Regeneration ist stabil. |
v12.1.0 | On-Demand Incremental Static 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 Incremental Static Regeneration |
v9.3.0 | getStaticProps eingeführt. |