Next.js中not-found.js触发方式详解

在 Next.js 中,not-found.js 文件用于定义 404 页面。Next.js 提供了全局和局部两种触发 404 页面的方式。以下是它们的详细讲解和区别:

1. 全局触发 404 页面

定义全局 404 页面

在 Next.js 项目中,你可以在 app 目录下创建一个名为 not-found.js 的文件来定义全局的 404 页面。这个页面会在用户访问不存在的路由时自动显示。

文件路径:

复制代码
app/not-found.js

示例代码:

jsx 复制代码
export default function NotFound() {
  return (
    <div>
      <h1>404 - Page Not Found</h1>
      <p>The page you are looking for does not exist.</p>
    </div>
  );
}
触发方式

全局 404 页面会在以下情况下自动触发:

  • 用户访问的路由在 app 目录下没有对应的页面文件。
  • 用户访问的路由在 pages 目录下没有对应的页面文件(如果你同时使用了 apppages 目录)。

2. 局部触发 404 页面

定义局部 404 页面

局部 404 页面是指在特定的路由或页面中手动触发 404 页面。你可以在任何页面或组件中通过调用 notFound() 函数来触发 404 页面。

示例代码:

jsx 复制代码
import { notFound } from 'next/navigation';

export default function Page({ params }) {
  const { id } = params;

  if (id === 'invalid-id') {
    notFound();
  }

  return (
    <div>
      <h1>Page Content</h1>
      <p>This is a valid page.</p>
    </div>
  );
}
触发方式

局部 404 页面会在以下情况下触发:

  • 你在页面或组件中手动调用了 notFound() 函数。

3. 全局触发和局部触发的区别

特性 全局触发 404 页面 局部触发 404 页面
触发条件 自动触发,当访问的路由不存在时 手动触发,通过调用 notFound() 函数
定义位置 app/not-found.js 任何页面或组件中
适用场景 适用于整个应用的 404 页面 适用于特定页面或条件下的 404 页面
灵活性 较低,适用于通用的 404 页面 较高,可以根据特定条件自定义 404 页面

4. 总结

  • 全局触发 的 404 页面适用于整个应用,当用户访问不存在的路由时自动显示。
  • 局部触发 的 404 页面适用于特定页面或条件,通过手动调用 notFound() 函数来触发。

根据你的需求,你可以选择使用全局触发、局部触发,或者两者结合的方式来处理 404 页面。

相关推荐
Mintopia12 分钟前
🧠 可定制化 AIGC:Web 用户个性化模型训练的技术门槛正在塌缩!
前端·人工智能·trae
JarvanMo33 分钟前
Flutter CI/CD 完整指南:从 Bitbucket Pipelines 到 Play Store 自动化部署
前端
JarvanMo41 分钟前
Flutter3.38 带来了什么
前端
倚栏听风雨1 小时前
React中useCallback
前端
不说别的就是很菜1 小时前
【前端面试】前端工程化篇
前端·面试·职场和发展
亿元程序员1 小时前
微信小游戏包体限制4M,一个字体就11.24M,怎么玩?
前端
涔溪1 小时前
vue中预览pdf文件
前端·vue.js·pdf
天若有情6731 小时前
从零实现轻量级C++ Web框架:SimpleHttpServer入门指南
开发语言·前端·c++·后端·mvc·web应用
摇滚侠1 小时前
css,控制超出部分隐藏,显示... css,控制超出部分不隐藏,换行
前端·css
IT_陈寒1 小时前
Python 3.12 新特性实战:10个让你代码更优雅的隐藏技巧
前端·人工智能·后端