javascript Next.js路由器.push对查询参数进行编码

uttx8gqw  于 2023-02-21  发布在  Java
关注(0)|答案(2)|浏览(114)

我尝试使用router.push进行重定向以传递查询字符串,但当我尝试在参数中传递带有特殊字符的值时,逗号正在编码我的URL。是否可以使用router.push将','传递到URL中?
我试过很多方法,但我不知道怎么做。

router.push({
  pathname: router.pathname,
  query: { ...router.query, pets: 'cats,dogs'},
})

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

s1ag04yj

s1ag04yj1#

对路径和查询字符串使用URL对象格式将对查询参数进行内部编码。
若要避免这种情况,可以将路径和查询字符串作为字符串传递。

router.push(`${router.asPath}?pets=cats,dogs`)
f0brbegy

f0brbegy2#

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

encodeURIComponent('cats,dogs')
// "cats%2Cdogs"

您需要在阅读时解码它们:

decodeURIComponent("cats%2Cdogs")
// "cats,dogs"

相关问题