您不能对同一动态路径 Nextjs 使用不同的 slug 名称
Posted
技术标签:
【中文标题】您不能对同一动态路径 Nextjs 使用不同的 slug 名称【英文标题】:You cannot use different slug names for the same dynamic path Nextjs 【发布时间】:2020-06-19 07:09:50 【问题描述】:我在我的项目中使用了基于文件夹结构的默认动态路由技术 nextjs。我有一条路线:
pages/[language]/location/[location_id]
现在我遇到了一个用例,除了[location_id]
的最后一个参数之外,我需要上述路线完全相同,我需要[route_id]
这里。
当我为这条新路线创建文件 [route_id].js
时,我遇到了这个错误:
throw new Error(`You cannot use different slug names for the same dynamic path ('$previousSlug' !== '$nextSlug').`);
在进行一些研究后,我知道错误以及为什么它向我显示此问题的问题,但我无法理解如何解决此问题。我只想要一个解决方案,如何在我的应用中实现这两条路线:
Route 1: pages/[language]/location/[location_id]
Route 2: pages/[language]/location/[route_id]
PS:这个我已经研究过了:https://github.com/zeit/next.js/issues/9081
【问题讨论】:
【参考方案1】:您提供的两条路线完全相同,完全没有不同。因此,它们将由单个页面处理。对于上述两个路由,没有两个 url 将路由到不同的 nextjs 页面的示例。
用[]
编写的任何内容都可以处理任何类型的值,例如 1 或 2 或任何其他值。
您不能创建两个页面来处理相同的请求,因为 next 或其他任何人都无法知道您使用的是 route_id 还是 location_id,因为它们都是代表任何值的变量。
如果您想区分它们,请创建一条新路线
/route/[route_id]
而不是
/location/[location_id]
,或使用queryparams
,例如
pages/[language]/location?locationid=[location_id]
和
pages/[language]/location?routeid=[route_id]
【讨论】:
非常感谢,我改变了路线。现在根结构是相同的,但我有一个参数route_id
用于新路由。
如果我不想创建新路由或使用查询参数怎么办?我有一个 URI 可以分类、发布或页面的场景,这就是为什么我想使用不同的 slug 作为同一路径但似乎不可能,为什么 Link 组件的 href 属性无法区分请求是哪个 slug?
@VikasKhunteta 你有没有找到解决方案。我有非常相似的路由需求,我也面临同样的问题。谢谢!
我也需要一个不能选择查询参数的解决方案。我打开了一个新问题,希望有运气。 ***.com/questions/69457864/…以上是关于您不能对同一动态路径 Nextjs 使用不同的 slug 名称的主要内容,如果未能解决你的问题,请参考以下文章
Nextjs - 动态导入 - CSS 模块不能从 node_modules 中导入