generateStaticParams
Die Funktion generateStaticParams
kann in Kombination mit dynamischen Routensegmenten verwendet werden, um Routen zur Build-Zeit statisch zu generieren, anstatt sie bei Bedarf zur Anforderungszeit zu erstellen.
Hinweis:
- Sie können die Segment-Konfigurationsoption
dynamicParams
verwenden, um zu steuern, was passiert, wenn ein dynamisches Segment besucht wird, das nicht mitgenerateStaticParams
generiert wurde.- Sie müssen ein leeres Array von
generateStaticParams
zurückgeben oderexport const dynamic = 'force-static'
verwenden, um Pfade zur Laufzeit zu revalidieren (ISR).- Während
next dev
wirdgenerateStaticParams
aufgerufen, wenn Sie zu einer Route navigieren.- Während
next build
wirdgenerateStaticParams
ausgeführt, bevor die entsprechenden Layouts oder Seiten generiert werden.- Während der Revalidierung (ISR) wird
generateStaticParams
nicht erneut aufgerufen.generateStaticParams
ersetzt die FunktiongetStaticPaths
im Pages Router.
Parameter
options.params
(optional)
Wenn mehrere dynamische Segmente in einer Route generateStaticParams
verwenden, wird die untergeordnete generateStaticParams
-Funktion einmal für jeden Satz von params
ausgeführt, den das übergeordnete Element generiert.
Das params
-Objekt enthält die gefüllten params
von der übergeordneten generateStaticParams
-Funktion, die verwendet werden können, um die params
in einem untergeordneten Segment zu generieren.
Rückgabewert
generateStaticParams
sollte ein Array von Objekten zurückgeben, wobei jedes Objekt die gefüllten dynamischen Segmente einer einzelnen Route repräsentiert.
- Jede Eigenschaft im Objekt ist ein dynamisches Segment, das für die Route gefüllt werden soll.
- Der Name der Eigenschaft ist der Name des Segments, und der Wert der Eigenschaft ist das, womit das Segment gefüllt werden soll.
Beispiel-Route | Rückgabetyp von generateStaticParams |
---|---|
/product/[id] | { id: string }[] |
/products/[category]/[product] | { category: string, product: string }[] |
/products/[...slug] | { slug: string[] }[] |
Einzelnes dynamisches Segment
Mehrere dynamische Segmente
Catch-All dynamisches Segment
Beispiele
Statische Rendering
Alle Pfade zur Build-Zeit
Um alle Pfade zur Build-Zeit statisch zu rendern, übergeben Sie die vollständige Liste der Pfade an generateStaticParams
:
Teilmenge der Pfade zur Build-Zeit
Um eine Teilmenge der Pfade zur Build-Zeit statisch zu rendern und den Rest beim ersten Besuch zur Laufzeit, geben Sie eine partielle Liste der Pfade zurück:
Durch die Verwendung der Segment-Konfigurationsoption dynamicParams
können Sie steuern, was passiert, wenn ein dynamisches Segment besucht wird, das nicht mit generateStaticParams
generiert wurde.
Alle Pfade zur Laufzeit
Um alle Pfade statisch zu rendern, wenn sie zum ersten Mal besucht werden, geben Sie ein leeres Array zurück (keine Pfade werden zur Build-Zeit gerendert) oder verwenden Sie export const dynamic = 'force-static'
:
Hinweis: Sie müssen immer ein Array von
generateStaticParams
zurückgeben, auch wenn es leer ist. Andernfalls wird die Route dynamisch gerendert.
Rendering für nicht spezifizierte Pfade deaktivieren
Um zu verhindern, dass nicht spezifizierte Pfade zur Laufzeit statisch gerendert werden, fügen Sie die Option export const dynamicParams = false
in einem Routensegment hinzu. Wenn diese Konfigurationsoption verwendet wird, werden nur Pfade, die von generateStaticParams
bereitgestellt werden, bedient, und nicht spezifizierte Routen führen zu 404 oder passen (im Fall von Catch-All-Routen).
Mehrere dynamische Segmente in einer Route
Sie können Parameter für dynamische Segmente über dem aktuellen Layout oder der Seite generieren, aber nicht darunter. Bei der Route app/products/[category]/[product]
beispielsweise:
app/products/[category]/[product]/page.js
kann Parameter für beide[category]
und[product]
generieren.app/products/[category]/layout.js
kann nur Parameter für[category]
generieren.
Es gibt zwei Ansätze zur Parametergenerierung für eine Route mit mehreren dynamischen Segmenten:
Parameter von unten nach oben generieren
Generieren Sie mehrere dynamische Segmente aus dem untergeordneten Routensegment.
Parameter von oben nach unten generieren
Generieren Sie zuerst die übergeordneten Segmente und verwenden Sie das Ergebnis zur Generierung der untergeordneten Segmente.
Die generateStaticParams
-Funktion eines untergeordneten Routensegments wird einmal für jedes Segment ausgeführt, das die übergeordnete generateStaticParams
-Funktion generiert.
Die untergeordnete generateStaticParams
-Funktion kann die von der übergeordneten generateStaticParams
-Funktion zurückgegebenen params
verwenden, um dynamisch ihre eigenen Segmente zu generieren.
Hinweis:
fetch
-Anfragen werden automatisch memoisiert für dieselben Daten über allegenerate
-präfixierten Funktionen, Layouts, Seiten und Server-Komponenten hinweg. Reactcache
kann verwendet werden, wennfetch
nicht verfügbar ist.
Versionshistorie
Version | Änderungen |
---|---|
v13.0.0 | generateStaticParams eingeführt. |