Maison  >  Article  >  interface Web  >  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
Linda Hamiltonoriginal
2024-11-17 17:37:02170parcourir

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";

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 },
});

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";

Interaction de la base de données avec Prisma

import prisma from "./lib/prisma";

const posts = await prisma.post.findMany();

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!

Déclaration:
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