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
.
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 sous forme d'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 avoir une récupération de données imbriquée au niveau du composant, envisagez d'explorer le Routeur App.- 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 à la page d'être hydratée correctement. Assurez-vous de ne pas transmettre d'informations sensibles qui ne devraient pas être disponibles côté client dans lesprops
.