ホームページ > ウェブフロントエンド > jsチュートリアル > getStaticProps を使用すると、取得したデータが Next.js で未定義になるのはなぜですか?

getStaticProps を使用すると、取得したデータが Next.js で未定義になるのはなぜですか?

Linda Hamilton
リリース: 2024-11-17 17:37:02
オリジナル
258 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート