Next Js 中的子路由
Subroutes in Next Js
我是 next js 的新手,我在 pages 目录下创建了一个名为 orders.js 的文件,我可以从 localhost:3000/orders 正确访问它。
但是,我现在想要一个子路径,以访问 ID 为 1 的订单(例如)。因此,我在目录 pages 中创建了一个目录 'orders',并将 order.js 重命名为 index.js,之后,我在 orders 目录中创建了另一个名为 id.js 的文件。
所以我目前的结构是:
pages/
orders/
index.js
id.js
但是我无法访问 localhost:3000/orders/1。
使用 Nuxt js,这很简单,我怎样才能用 next.js 实现同样的效果?
谢谢
这对于 Nextjs 来说也是微不足道的,但是,您正在尝试以更难的方式实现它。
你的第一种方法是正确的。如果您没有在 server.js
文件中为您的页面指定路由,如果 URL 正确,Nextjs 将自动使用它们(在这种情况下,订单导致 orders.js 页面)。
您正在寻找的是创建自定义路线。您可以查看此 here
的文档
我发现文档中的示例令人困惑,因此我建议改用 express。这是一个 example。然后,您可以在示例的 server.js
文件中看到快速路线。
你的路线最终会看起来像这样:
server.get('/orders/:id', (req, res) => {
return app.render(req, res, '/orders', req.query)
})
其中 :id
是一个查询参数,您可以在 orders.js 页面内的 getInitialProps
中访问它。
您可以查看快递中的快递路线示例 documentation。
您可以尝试使用 next-routes,Next.js
的动态路由
然后只需创建一个 routes.js 并添加,
const routes = require('next-routes')
module.exports = routes()
.add('orders', '/orders/:id', 'orders/id')
// name, url, page folder
或者如果您只需要服务器端路由,
server.get('/orders/:id', (req, res) => {
const actualPage = '/orders'
app.render(req, res, actualPage, req.query)
})
这可能对您有帮助:https://nextjs.org/docs#dynamic-routing。
通过将 [ ] 添加到页面,它会创建动态路由,在这种情况下,[orderid].js 可用于将多个订单映射到单个页面。
pages/
orders/
[id].js
使用
pages/
orders/
[dynamic_subroute].js
现在用
捕捉它
const router = useRoute();
const { dynamic_subroute } = router.query;
现在,您可以从 url 中动态捕获值(任何),而不是 dynamic_subroute
喜欢- 如果 url 是 pages/orders/1
那么 dynamic_subroute
的值在您的页面中将为 1
我是 next js 的新手,我在 pages 目录下创建了一个名为 orders.js 的文件,我可以从 localhost:3000/orders 正确访问它。
但是,我现在想要一个子路径,以访问 ID 为 1 的订单(例如)。因此,我在目录 pages 中创建了一个目录 'orders',并将 order.js 重命名为 index.js,之后,我在 orders 目录中创建了另一个名为 id.js 的文件。
所以我目前的结构是:
pages/
orders/
index.js
id.js
但是我无法访问 localhost:3000/orders/1。
使用 Nuxt js,这很简单,我怎样才能用 next.js 实现同样的效果?
谢谢
这对于 Nextjs 来说也是微不足道的,但是,您正在尝试以更难的方式实现它。
你的第一种方法是正确的。如果您没有在 server.js
文件中为您的页面指定路由,如果 URL 正确,Nextjs 将自动使用它们(在这种情况下,订单导致 orders.js 页面)。
您正在寻找的是创建自定义路线。您可以查看此 here
的文档我发现文档中的示例令人困惑,因此我建议改用 express。这是一个 example。然后,您可以在示例的 server.js
文件中看到快速路线。
你的路线最终会看起来像这样:
server.get('/orders/:id', (req, res) => {
return app.render(req, res, '/orders', req.query)
})
其中 :id
是一个查询参数,您可以在 orders.js 页面内的 getInitialProps
中访问它。
您可以查看快递中的快递路线示例 documentation。
您可以尝试使用 next-routes,Next.js
的动态路由然后只需创建一个 routes.js 并添加,
const routes = require('next-routes')
module.exports = routes()
.add('orders', '/orders/:id', 'orders/id')
// name, url, page folder
或者如果您只需要服务器端路由,
server.get('/orders/:id', (req, res) => {
const actualPage = '/orders'
app.render(req, res, actualPage, req.query)
})
这可能对您有帮助:https://nextjs.org/docs#dynamic-routing。
通过将 [ ] 添加到页面,它会创建动态路由,在这种情况下,[orderid].js 可用于将多个订单映射到单个页面。
pages/
orders/
[id].js
使用
pages/ orders/ [dynamic_subroute].js
现在用
捕捉它const router = useRoute(); const { dynamic_subroute } = router.query;
现在,您可以从 url 中动态捕获值(任何),而不是 dynamic_subroute
喜欢- 如果 url 是 pages/orders/1
那么 dynamic_subroute
的值在您的页面中将为 1