4

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

我已经尝试了很多东西,但我不知道如何让它发挥作用。

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

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

4

2 回答 2

0

对路径和查询字符串使用URL 对象格式将对查询参数进行内部编码。

为避免这种情况,您可以将路径和查询字符串作为字符串传递。

router.push(`${router.asPath}?pets=cats,dogs`)
于 2022-02-15T18:26:35.807 回答
0

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

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

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

decodeURIComponent("cats%2Cdogs")
"cats,dogs"
于 2020-12-23T09:20:31.907 回答