Skip to content

NextJS中文文档 - Not Found

not-found 文件用于在路由中找不到内容或使用 notFound 函数时渲染 UI。该文件应该导出一个返回 React JSX 的默认 React 组件。

tsx
import Link from 'next/link'

export default function NotFound() {
  return (
    <div>
      <h2>找不到页面</h2>
      <p>无法找到请求的资源</p>
      <Link href="/">返回主页</Link>
    </div>
  )
}
jsx
import Link from 'next/link'

export default function NotFound() {
  return (
    <div>
      <h2>找不到页面</h2>
      <p>无法找到请求的资源</p>
      <Link href="/">返回主页</Link>
    </div>
  )
}

须知not-found.js 不接受任何参数,返回的 UI 组件不会携带任何属性。

参考

notFound 函数

除了创建专门的 not-found 文件外,你还可以使用 notFound 函数触发 not-found 文件。调用 notFound() 会抛出一个错误,并终止路由段的渲染。然后,将显示最近的 not-found.js 文件。

示例

文件结构

当渲染 not-found.js 文件时,它将完全替换该路由段下的所有内容。例如,在 app/dashboard 中,如果使用 notFound(),那么 not-found.js 文件将替代 layout.jspage.js

然而,任何父段 layout.js 文件在 app 路径内都会继续渲染。这样就可以在 not-found.js 文件中保留其他导航和 UI 元素。

jsx
export default function TeamNotFound() {
  return <h1>未找到团队</h1>
}
jsx
export default function TeamLayout({ children }) {
  return (
    <div>
      <h1>仪表板布局</h1>
      {children}
    </div>
  )
}
jsx
import { notFound } from 'next/navigation'

export default function TeamPage({ params }) {
  if (params.team === 'team-not-found') {
    notFound()
  }

  return <h1>仪表板页面</h1>
}

版本历史

版本变更
v13.0.0引入 not-found

🎉有任何问题,欢迎联系我

WeChat QR Code
WeChat
QQ QR Code
QQ

赣ICP备2023003243号