【问题标题】:React Router: Using HashHistory and trying to get location.hashReact Router:使用 HashHistory 并尝试获取 location.hash
【发布时间】:2017-06-14 06:16:59
【问题描述】:

我目前在我的 SPA 中使用 hashHistory。当用户注册时,他们会收到一封电子邮件以验证帐户。当他们单击验证按钮时,它将重定向到我的网站,并在 url 中使用 jwt 令牌

当前网址:

website.com/#/

点击邮件中的验证后:

website.com/#/dashboard#SomeReallyLongTokenValue

问题是,因为我使用 hashHistory 我不能这样做:

this.props.location.hash

因为它现在将第一个哈希值视为值(这是一个空字符串)。我该如何解决?我知道迁移到 browserHistory 可以解决这个问题,但目前还不可能。

【问题讨论】:

    标签: reactjs url react-router


    【解决方案1】:

    您可以添加一个全局hashchange event handler,每次哈希更改时都会调用它,检查是否存在多个哈希字符并选择您需要的段并设置正确的哈希。

    window.addEventListener('hashchange', function (e) { 
        var fragments = e.newURL.split('#');
        if (fragments.length <= 2) {
            return;
        }
        location.hash = fragments[fragments.length-1];
    });
    

    【讨论】:

    • 我绝对可以看到这是如何工作的,但它不适用于 hashHistory。似乎在它到达我的实际组件之前的某个地方,window.location 已经更改为 /dashboard 并且我的哈希消失了
    猜你喜欢
    • 2016-09-18
    • 2015-11-28
    • 2016-11-04
    • 2018-02-11
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 2023-03-30
    • 2017-09-01
    相关资源
    最近更新 更多