history.pushState не удаляет хэш
Я проверяю URL для хэша. Если хеша не существует, я устанавливаю начальный хеш (маршрут по умолчанию).
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
, когда URL в браузере показывает /login
, Когда я нажимаю кнопку "Назад" браузера, URL-адрес в браузере меняется на /home#login
,
Как правильно удалить хеш из URL при маршрутизации?