getStaticProps
Exporter une fonction appelée getStaticProps
pré-rendra une page au moment du build en utilisant les props retournés par la fonction :
Vous pouvez importer des modules dans la portée globale pour les utiliser dans getStaticProps
. Les imports utilisés ne seront pas inclus dans le bundle côté client. Cela signifie que vous pouvez écrire du code serveur directement dans getStaticProps
, y compris des requêtes vers votre base de données.
Paramètre context
Le paramètre context
est un objet contenant les clés suivantes :
Nom | Description |
---|---|
params | Contient les paramètres de route pour les pages utilisant des routes dynamiques. Par exemple, si le nom de la page est [id].js , alors params ressemblera à { id: ... } . Vous devriez utiliser cela avec getStaticPaths , que nous expliquerons plus tard. |
preview | (Déprécié pour draftMode ) preview est true si la page est en Mode Prévisualisation et false sinon. |
previewData | (Déprécié pour draftMode ) Les données de prévisualisation définies par setPreviewData . |
draftMode | draftMode est true si la page est en Mode Brouillon et false sinon. |
locale | Contient la locale active (si activée). |
locales | Contient toutes les locales supportées (si activées). |
defaultLocale | Contient la locale par défaut configurée (si activée). |
revalidateReason | Fournit une raison pour laquelle la fonction a été appelée. Peut être l'une des suivantes : "build" (exécuté au moment du build), "stale" (période de revalidation expirée, ou exécution en mode développement), "on-demand" (déclenché via revalidation à la demande) |
Valeurs retournées par getStaticProps
La fonction getStaticProps
doit retourner un objet contenant soit props
, redirect
, ou notFound
suivi d'une propriété optionnelle revalidate
.
props
L'objet props
est une paire clé-valeur, où chaque valeur est reçue par le composant de page. Il doit s'agir d'un objet sérialisable afin que toutes les props passées puissent être sérialisées avec JSON.stringify
.
revalidate
La propriété revalidate
est le nombre de secondes après lesquelles une régénération de page peut se produire (par défaut false
ou pas de revalidation).
Apprenez-en plus sur la Régénération Statique Incrémentielle.
Le statut de cache d'une page utilisant ISR peut être déterminé en lisant la valeur de l'en-tête de réponse x-nextjs-cache
. Les valeurs possibles sont les suivantes :
MISS
- le chemin n'est pas dans le cache (se produit au maximum une fois, lors de la première visite)STALE
- le chemin est dans le cache mais a dépassé le temps de revalidation donc il sera mis à jour en arrière-planHIT
- le chemin est dans le cache et n'a pas dépassé le temps de revalidation
notFound
Le booléen notFound
permet à la page de retourner un statut 404
et une Page 404. Avec notFound: true
, la page retournera un 404
même s'il y avait une page générée avec succès auparavant. Cela est destiné à supporter des cas d'utilisation comme du contenu généré par l'utilisateur qui est supprimé par son auteur. Notez que notFound
suit le même comportement de revalidate
décrit ici.
Bon à savoir :
notFound
n'est pas nécessaire pour le modefallback: false
car seuls les chemins retournés pargetStaticPaths
seront pré-rendus.
redirect
L'objet redirect
permet de rediriger vers des ressources internes ou externes. Il doit correspondre à la forme { destination: string, permanent: boolean }
.
Dans de rares cas, vous pourriez avoir besoin d'attribuer un code de statut personnalisé pour que les anciens clients HTTP
redirigent correctement. Dans ces cas, vous pouvez utiliser la propriété statusCode
au lieu de la propriété permanent
, mais pas les deux. Vous pouvez aussi définir basePath: false
similairement aux redirections dans next.config.js
.
Si les redirections sont connues au moment du build, elles devraient être ajoutées dans next.config.js
à la place.
Lire des fichiers : Utiliser process.cwd()
Les fichiers peuvent être lus directement depuis le système de fichiers dans getStaticProps
.
Pour ce faire, vous devez obtenir le chemin complet vers un fichier.
Comme Next.js compile votre code dans un répertoire séparé, vous ne pouvez pas utiliser __dirname
car le chemin retourné sera différent de celui du routeur Pages.
À la place, vous pouvez utiliser process.cwd()
qui vous donne le répertoire où Next.js est exécuté.
Historique des versions
Version | Changements |
---|---|
v13.4.0 | App Router est maintenant stable avec une récupération de données simplifiée |
v12.2.0 | Régénération Statique Incrémentielle à la Demande est stable. |
v12.1.0 | Régénération Statique Incrémentielle à la Demande ajoutée (bêta). |
v10.0.0 | Options locale , locales , defaultLocale , et notFound ajoutées. |
v10.0.0 | Option de retour fallback: 'blocking' ajoutée. |
v9.5.0 | Régénération Statique Incrémentielle stable |
v9.3.0 | getStaticProps introduit. |