getInitialProps
Bon à savoir :
getInitialProps
est une API héritée. Nous recommandons d'utilisergetStaticProps
ougetServerSideProps
à la place.
getInitialProps
est une fonction async
qui peut être ajoutée au composant React exporté par défaut pour la page. Elle s'exécutera à la fois côté serveur et à nouveau côté client lors des transitions de page. Le résultat de la fonction sera transmis au composant React sous forme de props
.
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
}
Bon à savoir :
- Les données renvoyées par
getInitialProps
sont sérialisées lors du rendu côté serveur. Assurez-vous que l'objet retourné pargetInitialProps
est un simpleObject
, et n'utilise pasDate
,Map
ouSet
.- Pour le chargement initial de la page,
getInitialProps
s'exécutera uniquement côté serveur.getInitialProps
s'exécutera également côté client lors de la navigation vers une autre route avec le composantnext/link
ou en utilisantnext/router
.- Si
getInitialProps
est utilisé dans un_app.js
personnalisé et que la page vers laquelle on navigue utilisegetServerSideProps
, alorsgetInitialProps
s'exécutera également côté serveur.
Objet Context
getInitialProps
reçoit un seul argument appelé context
, qui est un objet avec les propriétés suivantes :
Nom | Description |
---|---|
pathname | Route actuelle, le chemin de la page dans /pages |
query | Chaîne de requête de l'URL, analysée comme un objet |
asPath | String du chemin réel (incluant la requête) affiché dans le navigateur |
req | Objet de requête HTTP (serveur uniquement) |
res | Objet de réponse HTTP (serveur uniquement) |
err | Objet d'erreur si une erreur survient pendant le rendu |
Mises en garde
getInitialProps
ne peut être utilisé que dans les fichiers de premier niveau depages/
, et non dans les composants imbriqués. Pour une récupération de données imbriquée au niveau du composant, envisagez d'explorer le Routeur d'application.- Peu importe que votre route soit statique ou dynamique, toutes les données renvoyées par
getInitialProps
sous forme deprops
pourront être examinées côté client dans le HTML initial. Ceci permet d'hydrater correctement la page. Assurez-vous de ne pas transmettre d'informations sensibles qui ne devraient pas être disponibles côté client dans lesprops
.