我有一个react组件,它允许用户取消订阅电子邮件,并且有一个散列与“取消订阅”链接一起传递,因此我们知道请求与哪些邮件相关。不幸的是,散列有时会包含一些特定于URL的字符,比如 + 和 / .现在我正在做类似的事情,从散列中获取数据,并将其传递到退订服务:
+
/
const query = new URLSearchParams(useLocation().search); const campaignId = query.get('campaign') ?? '';
问题是当我通过考试时 campaign 取消订阅,以及(例如) campaig 哈什有一个 + 在其中,它被转换成一个空间。
campaign
campaig
有没有更好的方法来获取这个字符串,或者“取消编码”它?
我最后做了一件相当不雅的事——但它奏效了。我用了 decodeURIComponent() 正如@ofri在上面的评论中所建议的,但这些空间并没有被转换回 + .这就是我想到的:
decodeURIComponent()
const query = new URLSearchParams(useLocation().search); const campaignId = query.get('campaignId') ?? ''; // then when we create the axios payload: campaignId : decodeURIComponent(campaignId.replace(/ /g, '+'))