从 reactjs 中的 URL 参数获取原始值
get raw value from URL parameter in reactjs
我有一个允许用户取消订阅电子邮件的反应组件,并且有一个散列与取消订阅一起传递 link 所以我们知道请求与哪个邮件项目相关联。不幸的是,散列有时包含一些 URL 特定字符,例如 +
和 /
。现在我正在做这样的事情来从散列中获取数据以传递给取消订阅服务:
const query = new URLSearchParams(useLocation().search);
const campaignId = query.get('campaign') ?? '';
问题是当我将 campaign
传递给取消订阅时,并且(例如)campaig
哈希中有一个 +
,它被转换为space.
有没有更好的方法来获取这个字符串,或者有什么方法可以“取消编码”它?
我最终做了一些相当不优雅的事情——但它有效。我在上面的评论中使用了@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, '+'))
我有一个允许用户取消订阅电子邮件的反应组件,并且有一个散列与取消订阅一起传递 link 所以我们知道请求与哪个邮件项目相关联。不幸的是,散列有时包含一些 URL 特定字符,例如 +
和 /
。现在我正在做这样的事情来从散列中获取数据以传递给取消订阅服务:
const query = new URLSearchParams(useLocation().search);
const campaignId = query.get('campaign') ?? '';
问题是当我将 campaign
传递给取消订阅时,并且(例如)campaig
哈希中有一个 +
,它被转换为space.
有没有更好的方法来获取这个字符串,或者有什么方法可以“取消编码”它?
我最终做了一些相当不优雅的事情——但它有效。我在上面的评论中使用了@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, '+'))