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 при маршрутизации?

0 ответов

Другие вопросы по тегам