vk-mini-app-boilerplate icon indicating copy to clipboard operation
vk-mini-app-boilerplate copied to clipboard

Упрощение работы с window.history

Open mahnunchik opened this issue 5 years ago • 0 comments

Обратил внимание, что в роутере используется своеобразный хак window.history.pushState(null, null); возможно проще и чище использовать чуть другой хак:

// Чистим первоначальное состояние
window.history.replaceState({}, '', '#init');
// Добавляем вторую запись в историю
window.history.pushState({}, '', '#router');

window.addEventListener('popstate', (event) => {
  // После нажатия кнопки назад (#init), возвращаем историю на вторую запись
  window.history.pushState({}, '', '#router-back');
  goBack('Android');
});

Соответственно у нас всегда 2 записи в истории и мы спокойно обрабатываем нажатие кнопки назад не засоряя историю.

В этом подходе из самого роутера можно будет убрать все вызовы pushState.

mahnunchik avatar Feb 08 '20 18:02 mahnunchik