Javascript 在加载页面之前删除url中的哈希
我正在尝试从url中捕获哈希,例如Javascript 在加载页面之前删除url中的哈希,javascript,reactjs,url,react-hooks,Javascript,Reactjs,Url,React Hooks,我正在尝试从url中捕获哈希,例如https://examplesite.com/page#time=1/12/2019&index=12344&access_token=JWT但在我有机会捕获它之前,url中的access\u令牌会被删除,在站点加载时,我无法使用window.location.hash捕获哈希 我的示例位于React功能组件内部,使用React挂钩: const watchHash=()=>{ if(window.location.hash.includes('access\
https://examplesite.com/page#time=1/12/2019&index=12344&access_token=JWT
但在我有机会捕获它之前,url中的access\u令牌
会被删除,在站点加载时,我无法使用window.location.hash捕获哈希
我的示例位于React功能组件内部,使用React挂钩:
const watchHash=()=>{
if(window.location.hash.includes('access\u token')){
console.log(window.location.hash);
}
};
useffect(()=>{
addEventListener('hashchange',watchHash);
watchHash();
返回窗口。removeEventListener('hashchange',watchHash);
}, []);
上面的代码监视散列并仅打印不包含访问令牌的url,例如此#time=1/12/2019&index=12344
,
如果尝试console.log(window.location.hash)
在钩子外部和组件本身的顶部,则发生此事件
我似乎不明白它为什么这样做,非常感谢。在您的应用程序中,您在哪里添加事件侦听器?如果在url更改后附加事件侦听器,则显然不会发出事件。@StephanOlsen此事件侦听器挂钩位于登录
组件内,ur加载此组件。应用程序的哪个部分从url中删除哈希?无论如何,您都需要将事件侦听器在组件树中向上移动,以便能够在事件发生之前附加侦听器。@StephanOlsen我不知道是什么在删除它,如果有什么东西在删除它,为什么要保留其他哈希?另外,我把它放到了最上面的组件中,仍然在捕获哈希之前删除了它。我猜您正在使用某种身份验证库,它可能正在从哈希中删除访问令牌。如果没有看到一些代码,就很难进一步帮助您。