You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS中如何通过路由链接组件?404问题及目录结构疑问

Next.js 路由跳转问题解决方案

为什么会出现404错误?

Next.js(Pages Router模式)的路由规则是基于src/pages目录结构自动生成的,只有放在这个目录下的文件才会对应到具体路由。你把Dashboard组件放在src/components里,这个目录不会被识别为路由页面,所以访问/dashboard自然会返回404。

不需要把所有组件移到pages目录

components目录用来存放可复用的业务组件是完全合理的,你只需要在pages目录下创建路由入口页面,再在这个页面里引入components中的Dashboard组件即可。

具体实现步骤

  1. 创建路由入口页面
    在src/pages下新建dashboard.jsx(或.tsx)文件,内容如下:
import Dashboard from '../components/Dashboard';

export default function DashboardPage() {
  return <Dashboard />;
}

这样/dashboard路由就会自动映射到这个页面文件,它的作用就是渲染你放在components里的Dashboard组件。

  1. 修正Link的写法
    你原来的按钮嵌套Link的写法可能会触发Next.js的默认行为问题,推荐两种更稳妥的写法:
  • 写法一:用Link直接包裹按钮
import Link from 'next/link';

// ...
<Link href="/dashboard">
  <button type="button" className="btn">Login</button>
</Link>
  • 写法二:使用useRouter手动跳转(适合需要在跳转前执行逻辑的场景)
import { useRouter } from 'next/router';

// ...
const router = useRouter();

const handleLoginClick = () => {
  // 可以在这里加登录验证等逻辑
  router.push('/dashboard');
};

// ...
<button type="button" className="btn" onClick={handleLoginClick}>
  Login
</button>

关于Next.js 13+ App Router的补充

如果你的项目用的是App Router(src/app目录),路由规则改为基于app目录下的文件夹和page.jsx文件。同样不需要把组件移到app目录,只需要在app/dashboard下创建page.jsx,然后引入components里的Dashboard组件即可。

内容的提问来源于stack exchange,提问作者Coding Geeek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:00:05