您不能为相同的动态路径 Nextjs 使用不同的 slug 名称

Reh*_*tar 7 javascript express reactjs react-router next.js

我在我的项目中使用 nextjs 的默认动态路由技术,它基于文件夹结构。我有一条路线是:

pages/[language]/location/[location_id]
Run Code Online (Sandbox Code Playgroud)

现在我遇到了一个用例,除了最后一个参数[location_id], 我需要[route_id]这里之外,我需要与上述路由完全相同。

当我[route_id].js为这条新路线创建一个文件时,我遇到了这个错误:

 throw new Error(`You cannot use different slug names for the same dynamic path ('${previousSlug}' !== '${nextSlug}').`);
Run Code Online (Sandbox Code Playgroud)

我知道这个错误以及为什么在做了一些研究后向我显示这个问题,但我无法理解如何解决这个问题。我只想要一个解决方案,如何在我的应用程序中实现这两条路线:

Route 1: pages/[language]/location/[location_id]
Run Code Online (Sandbox Code Playgroud)
Route 2: pages/[language]/location/[route_id]
Run Code Online (Sandbox Code Playgroud)

PS:我已经研究过这个:https : //github.com/zeit/next.js/issues/9081

Has*_*qir 6

您提供的两条路线完全相同,没有任何不同。因此,它们将由单个页面处理。对于上述两条路由,没有两个 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]
Run Code Online (Sandbox Code Playgroud)