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]`

如何让 Next JS 动态路由与 RelayJS 一起使用

使用 Next.js 的动态路由

Next.js - 带有动态路由的浅路由

如何不在 Next.js 动态路由之间保持状态?

Next.js:我们如何将动态路由重定向到静态页面?