getInitialProps
Wichtig:
getInitialProps
ist eine veraltete API. Wir empfehlen stattdessen die Verwendung vongetStaticProps
odergetServerSideProps
.
getInitialProps
ist eine async
-Funktion, die der standardmäßig exportierten React-Komponente einer Seite hinzugefügt werden kann. Sie wird sowohl serverseitig als auch clientseitig während Seitenübergängen ausgeführt. Das Ergebnis der Funktion wird als props
an die React-Komponente weitergegeben.
Wichtig:
- Von
getInitialProps
zurückgegebene Daten werden beim Server-Rendering serialisiert. Stellen Sie sicher, dass das zurückgegebene Objekt ein einfachesObject
ist und keineDate
-,Map
- oderSet
-Objekte enthält.- Beim ersten Laden der Seite wird
getInitialProps
nur auf dem Server ausgeführt. Bei Navigation zu einer anderen Route mit dernext/link
-Komponente oder durch Verwendung vonnext/router
wirdgetInitialProps
auch clientseitig ausgeführt.- Wenn
getInitialProps
in einer benutzerdefinierten_app.js
verwendet wird und die ZielseitegetServerSideProps
nutzt, wirdgetInitialProps
ebenfalls auf dem Server ausgeführt.
Kontext-Objekt
getInitialProps
erhält ein einzelnes Argument namens context
, das ein Objekt mit folgenden Eigenschaften ist:
Name | Beschreibung |
---|---|
pathname | Aktuelle Route, der Pfad der Seite in /pages |
query | Query-String der URL, als Objekt geparst |
asPath | String des tatsächlichen Pfads (inklusive Query), wie im Browser angezeigt |
req | HTTP-Request-Objekt (nur Server) |
res | HTTP-Response-Objekt (nur Server) |
err | Fehlerobjekt, falls während des Renderings ein Fehler auftritt |
Einschränkungen
getInitialProps
kann nur in Top-Level-Dateien unterpages/
verwendet werden, nicht in verschachtelten Komponenten. Für verschachteltes Data Fetching auf Komponentenebene sollten Sie den App Router in Betracht ziehen.- Unabhängig davon, ob Ihre Route statisch oder dynamisch ist, können alle von
getInitialProps
alsprops
zurückgegebenen Daten im initialen HTML clientseitig eingesehen werden. Dies dient dazu, die Seite korrekt zu hydrieren. Stellen Sie sicher, dass Sie keine sensiblen Informationen inprops
übergeben, die clientseitig nicht verfügbar sein sollten.