У меня проблемы с предотвращением перенаправления пути всякий раз, когда я нажимаю кнопку "Назад" в браузере, а затем нажимаю кнопку "Отмена" в окне подтверждения.
componentDidMount() {
window.addEventListener('popstate', this.quit);
}
quit = () => {
if(confirm('Quit?')) {
location.assign('/'); // Refreshes the browser then redirects to the homepage
history.pushState(null, null, null); // Clears the previous history
} else {
// What to do if the user clicks "Cancel"?
}
}
Я пытался return false
, но он все еще перенаправляет приложение на домашнюю страницу (но без обновления страницы). Я пробовал другие решения, такие как location.pathname = '/currentPathname'
и location.replace('/currentPathname')
, но, поскольку они перезагружают браузер, он отображает Cannot get /currentPathname
, потому что React Router не нужно перезагружать. Компонент <Prompt />
также не решил проблему, потому что у него нет функции prop, где я мог бы выполнить приведенный выше код.