我正在检查网址中的哈希值。如果不存在哈希,则设置一个初始哈希(默认路由)。
if (!window.location.hash) {
console.log("Empty hash")
window.location.hash = '#home'
}
然后我检查哈希变化:
window.addEventListener('hashchange', () => {
switch (window.location.hash) {
case '#home':
document.getElementById('app').innerHTML = layout + WelcomeHomePage();
window.history.pushState('', '', 'home');
break;
case '#login':
document.getElementById('app').innerHTML = layout + loginPage;
window.history.pushState('', '', 'login');
break;
default:
break;
}
})
因此,如果我单击“登录”,浏览器中的URL从/home
变为/login
,这正是我想要的,但是当我console.log
的完整URL时,当浏览器中的网址显示http://localhost:3000/home#login
时,我得到类似/login
的信息。当我单击浏览器的后退按钮时,浏览器中的URL更改为/home#login
。
如何在路由时从网址中正确删除哈希?