Next.js 路由:从 slug 页面推送新路由不正确路由
Next.js routing: pushing a new route from a slug page doesn't route properly
假设我有 2 条路线:/video
和 /products/[id]
,所以我的 pages
文件夹包含 video.js
和 products/[id].js
。当我使用 router.push
或 Link
从 /products/[id]
导航到 /video
时,URL 更新为 /products/video
。显然这不是正确的行为。
我错过了什么?
我认为你没有正确命名你的文件。
要获取 /video,您只需将 video.js 作为您的页面。
要获取 /products/[id] 页面,您需要有 /products/[id].js 文件
您不要将其命名为 products[id].js。只是 [id].js.
因此,将您的 [id].js 文件放入您的 /products 文件夹中。
并将您的 video.js 文件放入您的页面文件夹中。例如 /pages/video.js 转到 /video route
而/pages/products/[id].js会转到/products/id.
总结:你的 pages 文件夹应该有 video.js 文件,并创建文件夹 products,并将 [id].js 文件放在你的 products 文件夹中。
您需要将视频页面的路径提供为 /video
而不仅仅是 video
。否则,它将根据您所在的当前路径进行路由 - 从您的产品页面中可以看到 /products
.
router.push('/video')
<Link href="/video">...</Link>
假设我有 2 条路线:/video
和 /products/[id]
,所以我的 pages
文件夹包含 video.js
和 products/[id].js
。当我使用 router.push
或 Link
从 /products/[id]
导航到 /video
时,URL 更新为 /products/video
。显然这不是正确的行为。
我错过了什么?
我认为你没有正确命名你的文件。
要获取 /video,您只需将 video.js 作为您的页面。
要获取 /products/[id] 页面,您需要有 /products/[id].js 文件
您不要将其命名为 products[id].js。只是 [id].js.
因此,将您的 [id].js 文件放入您的 /products 文件夹中。
并将您的 video.js 文件放入您的页面文件夹中。例如 /pages/video.js 转到 /video route
而/pages/products/[id].js会转到/products/id.
总结:你的 pages 文件夹应该有 video.js 文件,并创建文件夹 products,并将 [id].js 文件放在你的 products 文件夹中。
您需要将视频页面的路径提供为 /video
而不仅仅是 video
。否则,它将根据您所在的当前路径进行路由 - 从您的产品页面中可以看到 /products
.
router.push('/video')
<Link href="/video">...</Link>