javascript - Subroutes in Next Js - Stack Overflow

I´m new to next js, I have created a file called orders.js under pages directory, and I can access it c

I´m new to next js, I have created a file called orders.js under pages directory, and I can access it correctly from localhost:3000/orders.

However, I want now to have a subroute, to access the order with id 1 (for example). So I have created a directory 'orders' inside the directory pages, and renamed order.js to index.js, after that, I have created another file inside the orders directory called id.js.

So my current structure is:

pages/
      orders/
             index.js
             id.js

However I cannot access to localhost:3000/orders/1.

Using Nuxt js, this was trivial, how can I achieve the same with next.js ?

Thanks

I´m new to next js, I have created a file called orders.js under pages directory, and I can access it correctly from localhost:3000/orders.

However, I want now to have a subroute, to access the order with id 1 (for example). So I have created a directory 'orders' inside the directory pages, and renamed order.js to index.js, after that, I have created another file inside the orders directory called id.js.

So my current structure is:

pages/
      orders/
             index.js
             id.js

However I cannot access to localhost:3000/orders/1.

Using Nuxt js, this was trivial, how can I achieve the same with next.js ?

Thanks

Share Improve this question edited Mar 14, 2019 at 10:34 fgonzalez asked Sep 1, 2018 at 13:58 fgonzalezfgonzalez 3,8877 gold badges56 silver badges84 bronze badges
Add a ment  | 

4 Answers 4

Reset to default 2

This is also trivial with Nextjs, however, you're trying to achieve it the harder way.

Your first approach is correct. If you don't specify a route for your pages in the server.js file, Nextjs will automatically use them if the URL is correct (in this case orders leads to the orders.js page).

What you're looking for is to create a custom route. You can see the documentation for this here

I find the example in the documentation confusing, so I remend using express instead. Here's an example for that. You can then see the express routes in the server.js file of the example.

Your route would end up looking something like this:

server.get('/orders/:id', (req, res) => {
  return app.render(req, res, '/orders', req.query)
}) 

Where :id is a query param which you can then access in your getInitialProps inside your orders.js page.

You can check the express routing examples in the express documentation.

This might help you : https://nextjs/docs#dynamic-routing.

by adding [ ] to a page it creates a dynamic route, in this case [orderid].js can be used to map multiple orders to a single page.

pages/
       orders/
              [id].js

You can try using next-routes, dynamic routes for Next.js

And simply create a routes.js and add,

const routes = require('next-routes')
module.exports = routes()
 .add('orders', '/orders/:id', 'orders/id')
// name, url, page folder

Or if you only want the server side routing,

  server.get('/orders/:id', (req, res) => {
    const actualPage = '/orders' 
    app.render(req, res, actualPage, req.query)
  })

use

pages/ orders/ [dynamic_subroute].js

now catch it with

const router = useRoute(); const { dynamic_subroute } = router.query;

Now, you can catch the value (any) dynamically from the url which is used instead of dynamic_subroute

like- if the url is pages/orders/1 then value of dynamic_subroute will be 1 in your page

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745290084a4620803.html

相关推荐

  • javascript - Subroutes in Next Js - Stack Overflow

    I´m new to next js, I have created a file called orders.js under pages directory, and I can access it c

    4小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信