【问题标题】:NextJs route.push() in custom page自定义页面中的 NextJs route.push()
【发布时间】:2021-06-30 18:06:21
【问题描述】:

我是next js的新手,现在还在练习,但是遇到了一些问题,希望能找到人帮我解决问题。

这是我的 route.push():

onClick={(e) => {
              const query = { oid: data.oid, customer: data.cid };

              const url = { pathname: '/orders/detail/', query };

              const urlAs = { pathname: '/orders/detail/', query };

              router.push(url, urlAs);
            }}

我希望我的 URL 看起来像 http://localhost:3000/orders/detail?id=1&customer=1

这是我的页面文件夹的样子 pages

为什么它没有在文件夹中呈现 `[oid].js'??

它会在此处运行错误消息error message

感谢您的所有帮助和建议,这对我来说意义重大!

【问题讨论】:

    标签: next.js router


    【解决方案1】:

    使用该页面文件夹结构,您的网址应该类似于http://localhost:3000/orders/detail/someID/someOID

    urlAs 功能不再用于路由。 (https://nextjs.org/docs/api-reference/next/router#routerpush)

    我会做的

    onClick={(e) => {
      router.push(`/orders/detail/${data.cid}/${data.oid}`);
    }
    

    或者你可以这样做:

    onClick={(e) => {
      router.push({
                  pathname: '/orders/detail/[id]/[oid]',
                  query: { id: data.cid, oid: data.oid },
                });
    }
    

    【讨论】:

    • 感谢您回答问题!!!我还有一个问题,如果我想让 URL 看起来另一种方式,而不仅仅是像 /order/detail/cid/oid,我应该为这些文件夹设置做什么?或者,如果只是想随机定制,你会怎么做?~~~
    • 随机定制是什么意思?能举个例子吗?
    • 要实现路径http://localhost:3000/orders/detail?id=1&customer=1,文件/文件夹应该只是/orders/details.js。然后至少可以通过路由器访问查询参数(我认为是通过 getServerSideProps 中的上下文)
    • 查看nextjs.org/docs/routing/dynamic-routes了解如何访问这些参数
    • 这就是我要找的东西!!!!对不起,我没有很好地解释我的问题,但你还是帮我解决了问题!!!我会继续练习,并尝试用你的方式编码!非常感谢!!祝你有美好的一天~
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2021-07-06
    • 2023-01-27
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多