首页 > web前端 > js教程 > 使用 getStaticProps 时,为什么我在 Next.js 中获取的数据未定义?

使用 getStaticProps 时,为什么我在 Next.js 中获取的数据未定义?

Linda Hamilton
发布: 2024-11-17 17:37:02
原创
287 人浏览过

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

使用 getStaticProps 排除 Next.js 数据获取问题

尽管在 Next.js 应用程序中实现了 getStaticProps 方法,但您还是遇到了以下问题:获取的数据未定义。该问题可能与您的文件结构有关,以下指南将解决此问题。

服务器组件

在 Next.js 的最新版本中,页面组件位于页面文件夹(设置路由的传统方法)利用服务器组件进行服务器端数据获取。

应用程序目录中的数据获取

转换到应用程序后目录(Next.js 13 的首选方法),您可以利用服务器组件直接在组件主体中检索数据。这是按照提供的代码片段中所示完成的,并带有具体注释作为指导。

导入请求 Cookie 和标头

import { cookies, headers } from "next/headers";
登录后复制

基于以下内容获取数据缓存选项

// 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 },
});
登录后复制

非获取数据请求

您可以省略 fetch() 并使用库或 ORM 直接访问数据。在这种情况下,您可以使用路由段配置,如下面的代码所示:

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

// no caching
export const dynamic = "force-dynamic";
登录后复制

与 Prisma 的数据库交互

import prisma from "./lib/prisma";

const posts = await prisma.post.findMany();
登录后复制

通过遵守这些建议,无论您采用什么文件结构或数据获取方法,您都可以在 Next.js 应用程序中有效地获取数据。

以上是使用 getStaticProps 时,为什么我在 Next.js 中获取的数据未定义?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板