getInitialProps
Bon à savoir :
getInitialPropsest une API héritée. Nous recommandons d'utilisergetStaticPropsougetServerSidePropsà 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 retournées par
getInitialPropssont sérialisées lors du rendu côté serveur. Assurez-vous que l'objet retourné pargetInitialPropsest un simpleObject, et n'utilise pasDate,MapouSet.- Pour le chargement initial de la page,
getInitialPropss'exécutera uniquement côté serveur.getInitialPropss'exécutera également côté client lors de la navigation vers une autre route avec le composantnext/linkou en utilisantnext/router.- Si
getInitialPropsest utilisé dans un_app.jspersonnalisé et que la page vers laquelle on navigue utilisegetServerSideProps, alorsgetInitialPropss'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
getInitialPropsne 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.- Que votre route soit statique ou dynamique, toutes les données retournées par
getInitialPropssous forme depropspourront ê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.