如何在Next.js中重新验证特定的动态段(/product/123),而不重新验证所有段(/product/[id])?- Next.js 13.4.6

c7rzv4ha  于 2023-06-22  发布在  其他
关注(0)|答案(1)|浏览(101)

我正在做一个Next.js项目版本13.4.6,我有一个动态路由/product/[id]。当特定产品的内容发生变化时,我需要重新验证数据,例如**/product/123**。
我知道revalidatePath函数,它允许重新验证与特定路径关联的数据。但是,当我将revalidatePath与动态段(例如revalidatePath('/product/[id]')一起使用时,它会重新验证**/product/[id]* 下的所有段。
下面是一个示例代码片段,演示了如何使用revalidatePath函数:

import { NextRequest, NextResponse } from 'next/server'
import { revalidatePath } from 'next/cache'

export async function GET(request: NextRequest) {
  const path = request.nextUrl.searchParams.get('path') || '/'
  revalidatePath(path)
  return NextResponse.json({ revalidated: true, now: Date.now() })
}

Next.js版本13.4.6文档说明,revalidatePath函数接受一个参数path,这个参数应该是一个字符串,表示与要重新验证的数据关联的文件系统路径。这是不是文字路由段(例如/product/123),而是文件系统上的路径(例如/product/[id])。
我想要实现的是选择性地只重新验证特定的产品ID,如/product/123,而不重新验证/product/[id]下的所有其他段。

在Next.js 13中,有没有一种方法可以实现这个选择性重新验证
任何经过测试的替代战略或最佳做法将不胜感激。
感谢您的评分

olqngx59

olqngx591#

我尝试用revalidateTag()来实现这一点,但它不起作用,因为fetch请求不接受动态“标记”值。

相关问题