首页 > 解决方案 > 从reactjs中的URL参数获取原始值

问题描述

我有一个允许用户取消订阅电子邮件的反应组件,并且有一个散列与取消订阅链接一起传递,因此我们知道请求与哪个邮件项目相关联。不幸的是,哈希有时会包含一些特定于 URL 的字符,例如+/。现在我正在做这样的事情来从哈希中获取数据以传递给取消订阅服务:

const query = new URLSearchParams(useLocation().search);
const campaignId = query.get('campaign') ?? '';

问题是,当我将campaignin 传递给取消订阅时,并且(例如)campaig哈希中有一个+,它会被转换为一个空格。

有没有更好的方法来获取这个字符串,或者“取消编码”它?

标签: javascriptreactjsurldecode

解决方案


我最终做了一些相当不雅的事情——但它确实有效。我decodeURIComponent()在上面的评论中使用了@ofri 所建议的,但空格没有被转换回+. 所以这就是我想出的:

const query = new URLSearchParams(useLocation().search);
const campaignId = query.get('campaignId') ?? '';

// then when we create the axios payload:
campaignId : decodeURIComponent(campaignId.replace(/ /g, '+'))

推荐阅读