Next.js router.push 对查询参数进行编码

And*_*hez 15 javascript next.js next-router

我正在尝试使用传递router.push查询字符串来进行重定向,但是当我尝试在参数中传递带有特殊字符的值(如逗号)时,正在对我的 URL 进行编码。是否可以使用 ',' 传递到 URL 中router.push

我尝试了很多事情,但我不知道如何让它发挥作用。

router.push({
  pathname: router.pathname,
  query: { ...router.query, pets: 'cats,dogs'},
})
Run Code Online (Sandbox Code Playgroud)

生成的 URL 将是myurl?pets=cats%2Cdogs,我希望它是myurl?pets=cats,dogs

Iva*_* V. 1

您需要对 URI 参数进行解码和编码。路由器自动为您编码查询参数:

encodeURIComponent('cats,dogs')
// "cats%2Cdogs"
Run Code Online (Sandbox Code Playgroud)

阅读时需要对它们进行解码:

decodeURIComponent("cats%2Cdogs")
// "cats,dogs"
Run Code Online (Sandbox Code Playgroud)

  • 我的下一个路由器也有同样的问题。你能解决这个问题吗? (3认同)
  • 这是行不通的。以下内容仍将由 Router.push 编码: ```router.push({ pathname: router.pathname, query: { ...router.query, pets: 'cats,dogs'}, })``` (2认同)