代码之家  ›  专栏  ›  技术社区  ›  user101289

从reactjs中的URL参数获取原始值

  •  0
  • user101289  · 技术社区  · 4 年前

    我有一个react组件,它允许用户取消订阅电子邮件,并且有一个散列与“取消订阅”链接一起传递,因此我们知道请求与哪些邮件相关。不幸的是,散列有时会包含一些特定于URL的字符,比如 + / .现在我正在做类似的事情,从散列中获取数据,并将其传递到退订服务:

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

    问题是当我通过考试时 campaign 取消订阅,以及(例如) campaig 哈什有一个 + 在其中,它被转换成一个空间。

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

    0 回复  |  直到 4 年前
        1
  •  0
  •   user101289    4 年前

    我最后做了一件相当不雅的事——但它奏效了。我用了 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, '+'))