例如,我们曾经使用 getServerSideProps
来重定向到页面组件中的 404 页面,如下所示:
// pages/index.js export async function getServerSideProps(context) { const placeId = context.params.placeId; const places = await getPlace(placeId); if (!places.length) { return { notFound: true, } } return { props: { places[0], }, };
通过 Next.js 13
和 app
目录,我们有了服务器组件。 getServerSideProps
不再使用时如何重定向到 404 页面?
P粉8059224372023-11-04 14:17:20
根据文档,您可以使用 notFound( )
函数如下所示,它会渲染相应的 not-found.js
文件:
// app/user/page.js import { notFound } from 'next/navigation'; export default async function Profile({ params }) { const res = await fetch(`/user/${params.id}`); if (!res.ok) { notFound(); } return <div>Actual Data</div>; }
// app/user/not-found.js export default function NotFound() { return <p>404 Not Found</p> }
如果没有 app/user/not-found.js
文件,则使用 app/not-found.js
。如果没有 app/not-found.js
,它将使用 Next.js 给出的默认值。