当前位置: 首页 > news >正文

nextjs路由[[...slug]]与[...slug]的区别

[...slug]- 必需捕获所有路由

// app/blog/[...slug]/page.js

在 Next.js 中,[[...slug]]和 [...slug]都是动态路由的语法,但有一个关键区别:

匹配的路径:

  • ✅ /blog/a

  • ✅ /blog/a/b

  • ✅ /blog/a/b/c

  • ❌ /blog(不匹配!会显示 404)

参数示例:

// 访问 /blog/nextjs/tutorial/1
export default function Page({ params }) {console.log(params.slug) // ['nextjs', 'tutorial', '1']return <div>...</div>
}

[[...slug]]- 可选捕获所有路由

// app/blog/[[...slug]]/page.js

匹配的路径:

  • ✅ /blog(也匹配!)

  • ✅ /blog/a

  • ✅ /blog/a/b

  • ✅ /blog/a/b/c

参数示例:

// 访问 /blog
export default function Page({ params }) {console.log(params.slug) // undefinedreturn <div>博客首页</div>
}// 访问 /blog/nextjs/tutorial
export default function Page({ params }) {console.log(params.slug) // ['nextjs', 'tutorial']return <div>博客详情</div>
}

实际应用场景对比

[...slug]的使用场景:

// 商品详情页 - 必须有商品路径
// app/product/[...slug]/page.js
// 只能匹配:/product/electronics/phone/123
// 不能匹配:/product (需要单独的 product/page.js)

[[...slug]]的使用场景:

// 文档页面 - 可以同时处理文档首页和子页面
// app/docs/[[...slug]]/page.js
// 匹配:/docs (文档首页)
// 匹配:/docs/getting-started (子页面)
// 匹配:/docs/getting-started/installation (更深层页面)

文件结构示例

app/
├── shop/
│   ├── [...slug]/
│   │   └── page.js      # 只匹配 /shop/xxx/xxx,不匹配 /shop
│   └── page.js          # 单独处理 /shop 首页
│
└── docs/└── [[...slug]]/└── page.js      # 同时处理 /docs 和 /docs/xxx/xxx

 参数处理代码示例

// 使用 [[...slug]] 时需要处理 slug 可能为 undefined 的情况
export default function DocsPage({ params }) {const slug = params.slug || [] // 防止 undefinedif (slug.length === 0) {return <div>文档首页</div>}if (slug.length === 1) {return <div>分类页面: {slug[0]}</div>}return <div>文档详情: {slug.join('/')}</div>
}

总结区别:

特性

[...slug]

[[...slug]]

是否必需

✅ 必须提供参数

❌ 参数可选

匹配根路径

❌ 不匹配

✅ 匹配

使用场景

必须有参数的页面

可同时处理首页和子页面

参数处理

params.slug总是数组

params.slug可能是 undefined

选择哪个取决于业务需求:是否需要单独处理"根路径"的情况。

http://www.dtcms.com/a/545974.html

相关文章:

  • 全国药品招标、投标常用数据渠道及数据库<很全>
  • 附录:glibc-2.4 pthread 源码简要(了解)
  • 网站注册费用济南网站优化哪里做的好
  • 晋中住房与城乡建设厅网站湖南手机版建站系统哪家好
  • 记类成员变量 vs 方法中的变量
  • 企业网站模板建站建网站浩森宇特
  • 项目(四)
  • 徐州 商城网站设计wordpress变为中文
  • Rust Feature Flags:编译期配置的艺术与工程实践
  • 贵金属网站建设阿里云域名备案查询
  • Java后台面试 常见问题
  • 如何自己建站网站制作深圳公司网站推广
  • 【RAG架构】RAG架构概要
  • 6.5 大数据方法论与实践指南-安全合规-账号体系
  • Vue 系列之:Vue2 双端 Diff 算法原理
  • 网站建设与维护案列领优惠券的网站怎么做
  • 【AIGC面试面经第四期】LLM-Qwen相关问答
  • 百度首页网站的设计用php做企业网站的可行性
  • 前端流水线连接npm私有仓库
  • 创可贴设计网站官网怎么建公司网站
  • leetcode375.猜数字大小II
  • 江西网站开发方案建设一个门户网站 费用
  • Android设备使用AirPods
  • 用js做的网站页面教育机构有哪些
  • @Transactional 事务注解坑之为什么自调用(同一个类中方法互相调用)事务不生效?
  • 使用 WSL 在 Windows 上安装 Linux
  • 有专业做网站的学校吗网站seo是啥
  • Agent记忆框架(三)
  • 建歌网站多少钱在百度备案网站
  • F040 python中医药图谱问答|双推荐算法+知识图谱+智能问答+vue+flask+neo4j前后端分离B/S架构|爬虫|图谱生成|全套