React Router:使用HashHistory并尝试获取location.hash

时间:2017-01-28 18:07:31

标签: reactjs url react-router

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

当前网站网址:

website.com/#/
在电子邮件中点击验证后

website.com/#/dashboard#SomeReallyLongTokenValue

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

this.props.location.hash

因为它将第一个哈希视为现在的值(这是一个空字符串)。我该如何解决?我知道转移到浏览器历史会修复它,但目前不可能。

1 个答案:

答案 0 :(得分:0)

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

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