您不能对同一动态路径 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 中导入

NextJS、Storybook、SVG 和绝对导入路径

React/nextJS:如何调试 s-s-r react 应用的不同节点?

如何更改NextJS根路径页面

使用 nextjs 自定义路由?

Apache驼峰单个文件的多个动态路由