revalidatePath

تتيح لك revalidatePath إزالة البيانات المخزنة مؤقتًا عند الطلب لمسار معين.

معلومة مفيدة:

  • revalidatePath متاحة في كل من بيئات تشغيل Node.js وEdge.
  • revalidatePath تبطِل ذاكرة التخزين المؤقت فقط عند زيارة المسار المضمن بعد ذلك. هذا يعني أن استدعاء revalidatePath مع جزء مسار ديناميكي لن يؤدي إلى تشغيل العديد من عمليات إعادة التحقق على الفور. يحدث الإبطال فقط عند زيارة المسار بعد ذلك.

المعاملات

revalidatePath(path: string, type?: 'page' | 'layout'): void;
  • path: إما سلسلة تمثل مسار نظام الملفات المرتبط بالبيانات التي تريد إعادة التحقق منها (على سبيل المثال، /product/[slug]/page)، أو جزء المسار الحرفي (على سبيل المثال، /product/123). يجب أن يكون أقل من 1024 حرفًا.
  • type: (اختياري) سلسلة 'page' أو 'layout' لتغيير نوع المسار لإعادة التحقق منه.

القيم المُرجعة

لا تُرجع revalidatePath أي قيمة.

أمثلة

إعادة التحقق من عنوان URL معين

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

سيؤدي هذا إلى إعادة التحقق من عنوان URL معين عند الزيارة التالية للصفحة.

إعادة التحقق من مسار صفحة

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'page')
// أو مع مجموعات المسارات
revalidatePath('/(main)/post/[slug]', 'page')

سيؤدي هذا إلى إعادة التحقق من أي عنوان URL يتطابق مع ملف page المقدم عند الزيارة التالية للصفحة. هذا لن يبطل الصفحات الموجودة أسفل الصفحة المحددة. على سبيل المثال، /blog/[slug] لن تبطل /blog/[slug]/[author].

إعادة التحقق من مسار تخطيط

import { revalidatePath } from 'next/cache'
revalidatePath('/blog/[slug]', 'layout')
// أو مع مجموعات المسارات
revalidatePath('/(main)/post/[slug]', 'layout')

سيؤدي هذا إلى إعادة التحقق من أي عنوان URL يتطابق مع ملف layout المقدم عند الزيارة التالية للصفحة. سيؤدي هذا إلى إعادة التحقق من الصفحات الموجودة أسفل نفس التخطيط عند الزيارة التالية. على سبيل المثال، في الحالة أعلاه، سيتم أيضًا إعادة التحقق من /blog/[slug]/[another] عند الزيارة التالية.

إجراء الخادم (Server Action)

'use server'

import { revalidatePath } from 'next/cache'

export default async function submit() {
  await submitForm()
  revalidatePath('/')
}

معالج المسار (Route Handler)

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',
  })
}
import { revalidatePath } from 'next/cache'

export async function GET(request) {
  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',
  })
}