Rumah  >  Artikel  >  hujung hadapan web  >  Mengapakah data saya yang diambil tidak ditentukan dalam Next.js apabila menggunakan getStaticProps?

Mengapakah data saya yang diambil tidak ditentukan dalam Next.js apabila menggunakan getStaticProps?

Linda Hamilton
Linda Hamiltonasal
2024-11-17 17:37:02168semak imbas

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

Menyelesaikan Masalah Pengambilan Data Next.js dengan getStaticProps

Walaupun melaksanakan kaedah getStaticProps dalam aplikasi Next.js anda, anda menghadapi masalah di mana data yang diambil tidak ditentukan. Isu ini berkemungkinan berkaitan dengan struktur fail anda dan panduan berikut akan menangani masalah ini.

Komponen Pelayan

Dalam versi terbaharu Next.js, komponen halaman dalam folder halaman (kaedah tradisional untuk menyediakan laluan) menggunakan Komponen Pelayan untuk pengambilan data sebelah pelayan.

Pengambilan Data Dalam Apl Direktori

Selepas beralih ke direktori apl (pendekatan pilihan untuk Next.js 13), anda boleh memanfaatkan Komponen Pelayan untuk mendapatkan data terus dalam badan komponen. Ini dicapai seperti yang digambarkan dalam coretan kod yang disediakan, dengan ulasan khusus untuk panduan.

Import Permintaan Kuki dan Pengepala

import { cookies, headers } from "next/headers";

Mengambil Data Berdasarkan Pilihan Caching

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

Bukan Ambil Permintaan Data

Anda boleh meninggalkan fetch() dan mengakses data secara terus menggunakan perpustakaan atau ORM. Dalam senario ini, anda boleh menggunakan Konfigurasi Segmen Laluan, seperti yang ditunjukkan dalam kod di bawah:

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

// no caching
export const dynamic = "force-dynamic";

Interaksi Pangkalan Data dengan Prisma

import prisma from "./lib/prisma";

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

Dengan mematuhi ini cadangan, anda boleh mengambil data dengan berkesan dalam aplikasi Next.js anda, tanpa mengira struktur fail atau pengambilan data kaedah yang anda gunakan.

Atas ialah kandungan terperinci Mengapakah data saya yang diambil tidak ditentukan dalam Next.js apabila menggunakan getStaticProps?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Terma dan Fungsi dalam React.jsArtikel seterusnya:Terma dan Fungsi dalam React.js