我正在做一个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中,有没有一种方法可以实现这个选择性重新验证?
任何经过测试的替代战略或最佳做法将不胜感激。
感谢您的评分
1条答案
按热度按时间olqngx591#
我尝试用revalidateTag()来实现这一点,但它不起作用,因为fetch请求不接受动态“标记”值。