Nextjs 13“未找到”与generateStaticParams不兼容?

p1tboqfb  于 2023-04-20  发布在  其他
关注(0)|答案(1)|浏览(229)

我使用Nextjs 13的“generateStaticParams”函数在与我从另一个函数获取的数据中的一组id不匹配的路由上抛出404,如下所示:

export async function generateStaticParams() {
  const posts = await PostsData();
  return posts.map((post) => ({
    postId: post.id,
  }));
}

我正在寻找一种方法来有一个自定义404页面。据我所知,为了有一个自定义404页面,你需要创建一个“not-found.tsx”页面,并从“next/navigation”导入“notFound”。然后,如果你无法找到与页面参数中找到的ID匹配的项目,你需要调用“notFound()”。
然而,如果我删除generateStaticParams(),这个notFound()函数只会将用户路由到自定义404。如果该函数仍然存在,用户仍然会被路由到Nextjs 13的默认404页面。
这两个函数是否不兼容?如果我想使用generateStaticParams(),我是否无法自定义404页面?任何帮助都非常感谢。

fd3cxomn

fd3cxomn1#

很快我就找到了答案。为了防止Nextjs自动生成页面,即使在不是静态生成的路由上,我使用了:

export const dynamicParams = false;

删除此行使我可以保留现有路由上的SSG功能,调用notFound()使我可以将用户路由到由not-found.tsx中的内容定义的自定义404页面

相关问题