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

IT技术 javascript reactjs express react-router next.js
2021-05-02 04:06:31

我在我的项目中使用 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]