Next.js 路由:动态与精确
Posted
技术标签:
【中文标题】Next.js 路由:动态与精确【英文标题】:Next.js Route: Dynamic vs exact 【发布时间】:2021-12-17 14:43:47 【问题描述】:我是 Next.js 的新手,我很好奇会发生什么,例如,如果我有这两条路线,其中一条是动态的,一条是原样的,并且两者的名称几乎相同:
/posts/[id]
/posts/latest
我在想他们会不会互相冲突?如果他们这样做了,那么 Next.JS 将如何区分 /latest
不是 /[id]
的参数?
【问题讨论】:
因为您可以将id
参数添加到url。 https://www.google.com/search?q=italy
如果你把它粘贴到你的浏览器,你会得到意大利的谷歌搜索结果。如您所见,italy
在链接中的位置。所以,如果你输入america
,美国的搜索结果就会出现。基本上,您必须将 id
参数添加到您的 http 请求中。
【参考方案1】:
Next.js 在内部处理它,使用预定义路由 /posts/latest
和动态路由 /posts/[id]
完全可以。在这种情况下,/posts/latest
将始终优先于动态路由。
来自dynamic routes documentation:
预定义路由优先于动态路由,并且动态 路线超过捕获所有路线。请看以下示例:
pages/post/create.js
- 将匹配/post/create
pages/post/[pid].js
- 将匹配/post/1
、/post/abc
等。但不匹配/post/create
pages/post/[...slug].js
- 将匹配/post/1/2
、/post/a/b/c
等。但是 不是/post/create
,/post/abc
【讨论】:
以上是关于Next.js 路由:动态与精确的主要内容,如果未能解决你的问题,请参考以下文章
Next.js 动态路由错误:提供的路径 `page-name` 与页面不匹配:`/[slug]`