Spec-Zone.ru › Next.js

revalidatePath

revalidatePath позволяет вам очистить данные кэша по запросу для определенного пути.

Важно знать:

  • revalidatePath доступен как в средах Node.js, так и Edge.
  • revalidatePath делает недействительным кэш только при следующем посещении включённого пути. Это означает, что вызов revalidatePath с динамическим сегментом маршрута не вызовет сразу множество повторных валидаций. Действительность происходит только при следующем посещении пути.
  • В настоящее время revalidatePath делает недействительными все маршруты в кэше маршрутизатора на стороне клиента. Это поведение временное и будет обновлено в будущем, чтобы применять его только к конкретному пути.
  • Использование revalidatePath делает недействительным только конкретный путь в кэше маршрутов на стороне сервера.

Параметры

revalidatePath(path: string, type?: 'page' | 'layout'): void;
  • path: Строка, представляющая файловый путь, связанный с данными, которые вы хотите перевалидировать (например, /product/[slug]/page), или буквальный сегмент маршрута (например, /product/123). Должно быть меньше 1024 символов. Это значение чувствительно к регистру.
  • type: (необязательно) Строка 'page' или 'layout' для изменения типа пути, который нужно перевалидировать. Если path содержит динамический сегмент (например, /product/[slug]/page), этот параметр обязателен.

Возвращаемое значение

revalidatePath не возвращает никакого значения.

Примеры

Перевалидация конкретного URL

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/post-1')

Это перевалидирует один конкретный URL при следующем посещении страницы.

Перевалидация пути страницы

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'page')
// or with route groups
revalidatePath('/(main)/post/[slug]', 'page')

Это перевалидирует любой URL, который соответствует предоставленному файлу page при следующем посещении страницы. Это не сделает недействительными страницы под конкретной страницей. Например, /blog/[slug] не сделает недействительным /blog/[slug]/[author].

Перевалидация пути макета

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'layout')
// or with route groups
revalidatePath('/(main)/post/[slug]', 'layout')

Это перевалидирует любой URL, который соответствует предоставленному файлу layout при следующем посещении страницы. Это приведет к перевалидации страниц под этим же макетом при следующем посещении. Например, в приведенном случае /blog/[slug]/[another] также будет перевалидирован при следующем посещении.

Перевалидация всех данных

import { revalidatePath } from 'next/cache'
 
revalidatePath('/', 'layout')

Это очистит кэш маршрутизатора на стороне клиента и перевалидирует кэш данных при следующем посещении страницы.

Действие сервера

'use server'
 
import { revalidatePath } from 'next/cache'
 
export default async function submit() {
  await submitForm()
  revalidatePath('/')
}

Обработчик маршрута

import { revalidatePath } from 'next/cache'
import { NextRequest } from 'next/server'
 
export async function GET(request: NextRequest) {
  const path = request.nextUrl.searchParams.get('path')
 
  if (path) {
    revalidatePath(path)
    return Response.json({ revalidated: true, now: Date.now() })
  }
 
  return Response.json({
    revalidated: false,
    now: Date.now(),
    message: 'Missing path to revalidate',
  })
}

© 2024 Vercel, Inc.
Licensed under the MIT License.
https://nextjs.org/docs/app/api-reference/functions/revalidatePath

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API