getInitialProps
Wichtig zu wissen:
getInitialPropsist eine veraltete API. Wir empfehlen stattdessen die Verwendung vongetStaticPropsodergetServerSideProps.
getInitialProps ist eine async-Funktion, die der standardmäßig exportierten React-Komponente einer Seite hinzugefügt werden kann. Sie wird sowohl serverseitig als auch erneut clientseitig während Seitenübergängen ausgeführt. Das Ergebnis der Funktion wird als props an die React-Komponente weitergegeben.
import { NextPageContext } from 'next'
Page.getInitialProps = async (ctx: NextPageContext) => {
const res = await fetch('https://api.github.com/repos/vercel/next.js')
const json = await res.json()
return { stars: json.stargazers_count }
}
export default function Page({ stars }: { stars: number }) {
return stars
}Page.getInitialProps = async (ctx) => {
const res = await fetch('https://api.github.com/repos/vercel/next.js')
const json = await res.json()
return { stars: json.stargazers_count }
}
export default function Page({ stars }) {
return stars
}Wichtig zu wissen:
- Von
getInitialPropszurückgegebene Daten werden beim Server-Rendering serialisiert. Stellen Sie sicher, dass das zurückgegebene Objekt vongetInitialPropsein einfachesObjectist und keineDate,MapoderSetverwendet.- Für das initiale Laden der Seite wird
getInitialPropsnur auf dem Server ausgeführt.getInitialPropswird dann auch auf dem Client ausgeführt, wenn zu einer anderen Route mit dernext/link-Komponente oder durch die Verwendung vonnext/routernavigiert wird.- Wenn
getInitialPropsin einer benutzerdefinierten_app.jsverwendet wird und die Seite, zu der navigiert wird,getServerSidePropsverwendet, dann wirdgetInitialPropsauch auf dem Server ausgeführt.
Kontext-Objekt
getInitialProps erhält ein einzelnes Argument namens context, das ein Objekt mit den 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 (einschließlich Query), der im Browser angezeigt wird |
req | HTTP-Request-Objekt (nur Server) |
res | HTTP-Response-Objekt (nur Server) |
err | Fehlerobjekt, falls während des Renderings ein Fehler auftritt |
Einschränkungen
getInitialPropskann nur inpages/-Top-Level-Dateien verwendet werden und nicht in verschachtelten Komponenten. Für verschachteltes Daten-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
getInitialPropsalspropszurückgegebenen Daten clientseitig im initialen HTML untersucht 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.