我使用 Nextjs 13 的“generateStaticParams”函数在与我从另一个函数获取的数据中的一组 id 不匹配的路由上抛出 404,如下所示:
export async function generateStaticParams() {
const posts = await PostsData();
return posts.map((post) => ({
postId: post.id,
}));
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种拥有自定义 404 页面的方法。据我了解,为了拥有自定义 404 页面,您需要创建一个“not-found.tsx”页面,并从“next/navigation”导入“notFound”。notFound()如果您无法找到与页面参数中找到的 ID 相匹配的项目,则需要调用“ ”。
但是,如果我删除 .notFound() 函数,则该 notFound() 函数只会将用户路由到自定义 404 generateStaticParams()。如果该功能仍然存在,用户仍会被路由到 Nextjs 13 的默认 404 页面。
这两个功能不兼容吗?如果我想使用,我是否无法拥有自定义 404 页面generateStaticParams()?在此非常感谢任何帮助。
编辑:请参阅 Maciej Wira 的评论。该解决方案可能并不完全完整。
很快就找到了答案。为了防止 Nextjs 即使在非静态生成的路由上自动生成页面,我使用了:
export const dynamicParams = false;
Run Code Online (Sandbox Code Playgroud)
删除此行允许我保留现有路由上的 SSG 功能,并且调用notFound()允许我将用户路由到由我的内容定义的自定义 404 页面not-found.tsx
| 归档时间: |
|
| 查看次数: |
2142 次 |
| 最近记录: |