Maison > interface Web > js tutoriel > Pourquoi mes données récupérées ne sont-elles pas définies dans Next.js lors de l'utilisation de getStaticProps ?

Pourquoi mes données récupérées ne sont-elles pas définies dans Next.js lors de l'utilisation de getStaticProps ?

Linda Hamilton
Libérer: 2024-11-17 17:37:02
original
256 Les gens l'ont consulté

Why is my fetched data undefined in Next.js when using getStaticProps?

Dépannage de la récupération de données Next.js avec getStaticProps

Malgré l'implémentation de la méthode getStaticProps dans votre application Next.js, vous rencontrez un problème où les données récupérées ne sont pas définies. Le problème est probablement lié à la structure de vos fichiers, et les conseils suivants résoudront ce problème.

Composants du serveur

Dans les versions récentes de Next.js, les composants de page dans le dossier Pages (la méthode traditionnelle de configuration des itinéraires) utilise des composants serveur pour la récupération de données côté serveur.

Récupération de données dans l'application Répertoire

Après la transition vers le répertoire de l'application (l'approche préférée pour Next.js 13), vous pouvez exploiter les composants serveur pour récupérer des données directement dans le corps du composant. Ceci est accompli comme illustré dans l'extrait de code fourni, avec des commentaires spécifiques à titre indicatif.

Importer les cookies et les en-têtes de demande

import { cookies, headers } from "next/headers";
Copier après la connexion

Récupération de données basées sur Options de mise en cache

// Force caching until manually invalidated, similar to getStaticProps
const staticData = await fetch(`https://...`, { cache: "force-cache" });

// Refetch on every request, similar to getServerSideProps
const dynamicData = await fetch(`https://...`, { cache: "no-store" });

// Cache with a lifespan of 10 seconds, similar to getStaticProps with revalidate
const revalidatedData = await fetch(`https://...`, {
  next: { revalidate: 10 },
});
Copier après la connexion

Données non récupérées Requête

Vous pouvez omettre fetch() et accéder directement aux données à l'aide de bibliothèques ou d'ORM. Dans ce scénario, vous pouvez utiliser Route Segment Config, comme démontré dans le code ci-dessous :

// revalidate every 10 seconds
export const revalidate = 10;

// no caching
export const dynamic = "force-dynamic";
Copier après la connexion

Interaction de la base de données avec Prisma

import prisma from "./lib/prisma";

const posts = await prisma.post.findMany();
Copier après la connexion

En adhérant à ces recommandations, vous pouvez récupérer efficacement des données dans votre application Next.js, quelle que soit la structure du fichier ou la méthode de récupération des données que vous utilisez.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal