«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу эффективно получать данные в Next.js 13, чтобы избежать неопределенных данных?

Как я могу эффективно получать данные в Next.js 13, чтобы избежать неопределенных данных?

Опубликовано 15 ноября 2024 г.
Просматривать:988

How can I Fetch Data Efficiently in Next.js 13 to Avoid Undefined Data?

Препятствия при извлечении данных в Next.js: разрешение неопределенных данных

Next.js предлагает несколько методов извлечения данных на стороне сервера, включая getStaticProps и getServerSideProps. Однако эти методы в первую очередь предназначены для компонентов страницы в папке страниц. В Next.js 13 появилась новая концепция, известная как «Серверные компоненты», позволяющая извлекать данные непосредственно из тела компонента.

Серверные компоненты: комплексное решение

Серверные компоненты обеспечивают более гибкий подход для извлечения данных, что позволяет разработчикам:

  • Извлекать данные на сервер с возможностью кэширования результатов, аналогично getStaticProps.
  • Извлекайте данные по каждому запросу, аналогично getServerSideProps.
  • Укажите собственную стратегию повторной проверки.

Чтобы использовать серверные компоненты, определите свой компонент как компонент по умолчанию экспорт файла в каталог приложения. Извлечение данных можно выполнить внутри тела компонента, используя следующие методы:

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

export default async function Component({ params, searchParams }) {
  // Cached until manually invalidated
  const staticData = await fetch(`https://...`, { cache: "force-cache" });

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

  // Revalidated with a 10-second lifetime
  const revalidatedData = await fetch(`https://...`, { next: { revalidate: 10 } });
}

Альтернативные подходы

Помимо серверных компонентов вы также можете получать данные с помощью библиотек или напрямую взаимодействовать с базой данных с помощью ORM. В таких сценариях вы можете использовать конфигурацию сегмента маршрута:

// layout.js OR page.js OR route.js

import prisma from "./lib/prisma";

// Caching options
export const revalidate = 10; // Revalidate every 10s
// OR
export const dynamic = "force-dynamic"; // No caching

async function getPosts() {
  const posts = await prisma.post.findMany();
  return posts;
}

export default async function Page() {
  const posts = await getPosts();
}

Используя серверные компоненты или альтернативные подходы, вы можете эффективно получать данные на сервере в Next.js, решая проблему неопределенных данных, возникающую при использовании исключительно getStaticProps.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3