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

Next.js动态页面与子页面Link跳转全页重载问题求助

Next.js动态路由Link触发全页重载的原因分析

核心问题:路由路径不匹配

你的pages目录下的动态文件夹是[Formation],但在Link的href属性里写的是[Formations]/[SubPage](多了个字母s)。Next.js处理客户端路由时,会根据href匹配pages目录的文件结构,当这个路径找不到对应页面文件时,不会拦截浏览器默认跳转行为,直接触发全页重载,导致_app.js的布局重新加载。

对比测试用例的差异

你测试的<Link href="ReactJS/Udemy">Udemy</Link>能正常无刷新跳转,是因为这个路径能直接匹配到对应的路由规则(静态页面或动态路由匹配),Next.js识别到这是客户端可处理的路由,会阻止浏览器默认跳转,走客户端路由切换逻辑。

关于标签外观一致的说明

虽然两个Link生成的<a>标签看起来一样,但Next.js会给合法路由的Link绑定点击事件拦截逻辑。只有当href对应的路由在客户端路由表中存在时,才会触发无刷新跳转;否则会复用浏览器原生跳转行为,导致全页重载。

修复建议

  • 修正href的路径拼写,和pages目录的文件夹名保持一致:
    <Link href={`/[Formation]/[SubPage]`} as={`${Title}/${item}`}>
      {item}
    </Link>
    
  • 更简洁的写法(无需手动指定as,Next.js会自动匹配动态路由):
    <Link href={`/${Title}/${item}`}>
      {item}
    </Link>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:01:02