javascript - NextJS - 将查询参数附加到动态路由

标签 javascript reactjs next.js

在我的 NextJS 应用程序中,我有一个在每个页面上都可见的语言选择器。当我选择一种新语言时,我只想通过附加查询参数 lang=en 来替换当前 URL给它。

这是替换 URL 的函数:

const changeLanguage = (lang: LanguageID) => {
    replace({
      pathname,
      query: { ...query, lang },
    });
  };

在本例中,replace , querypathname来自下一个路由器。

现在,一切都适用于静态路由,但我无法让它适用于动态路由。例如,我有以下文件夹结构:
pages
|_customers
|__index.tsx
|__[customerId].tsx

如果我在 http://localhost/customers我将语言更改为英语,URL 更改为 http://localhost/customers?lang=en这就是我想要的。但是,如果我在 http://localhost/customer/1我将语言更改为英语,URL 更改为 http://localhost/customers/[customerId]?customerId=1&lang=en ,而不是我期待的 URL http://localhost/customers/1?lang=en .

现在,我知道我可以使用 asPath在路由器上,并通过附加 lang 重构查询字符串对象到它,但我觉得它应该被构建到 Next 中。另外,我知道使用 vanilla JS 可以轻松完成,但这不是重点。

我错过了什么吗?有没有更简单的方法将查询参数附加到动态路由而不进行服务器端重新渲染?

谢谢

最佳答案

只需向当前路由器添加更多参数,然后自行推送

const router = useRouter();
router.query.NEWPARAMS = "VALUE"
router.push(router)

关于javascript - NextJS - 将查询参数附加到动态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61466891/

相关文章:

javascript - 如何使用 uuid 作为 postgres 的默认 ID?

javascript - React 组件结束标签

javascript - 如何在 quill js 2.0 中初始化表?

javascript - CSS 更改 [使用 JS]

reactjs - 渲染时的 react 显示先前的状态值

reactjs - 如何将异步服务器组件导入 Nextjs 13 中的客户端组件?

javascript - 提取 URL 的最后一个字符串

mongodb - API 错误 : Error: connect ECONNREFUSED 127. 0.0.1:389 Apollo-React MongoDB

javascript - 进入我在 firebase 托管上托管的应用程序,重定向到 google 登录页面

node.js - NextJS Docker 容器与 .env.production