Vue - отключить кнопку возврата браузера от очистки запроса URL - PullRequest
0 голосов
/ 01 июля 2019

Итак, я получил приложение Vue. Когда запрос определенных значений входит в панель URL-адресов, компонент запускается и отображает информацию, но когда этот запрос удаляется, компонент тоже.

Каждый раз, когда я нажимаю кнопку «Назад», он удаляет запрос (ожидаемое поведение). Поэтому я хочу остановить браузер от удаления строки запроса (или вернуться до того, как строка запроса была применена), спросив пользователя, уверены ли они, что хотят выйти, если да, то нормальное поведение, если нет, то не возвращаться и продолжить с текущим.

Я пробовал следующее:

window.onbeforeunload
window.onpopstate
window.onhashchanged

Я также пытался добавить запрос обратно после его удаления, но это обновляет страницу.

Но все они не работают для этой конкретной проблемы. Вот как я называю компонент:

<exampleComponent v-if="$route.query.exampleQuery"></exampleComponent>

Вот как я могу добавить параметры запроса в URL:

handle.$router.push('?exampleQuery=' + _id);

Редактировать

Я уже пробовал навигационные охранники. Но дело в том, что это не изменение маршрута, когда вы добавляете параметры запроса, поэтому, когда нажимается кнопка «Назад» в браузере, она не срабатывает beforeRouteLeave / beforeRouteUpdate. Я добавил компонент и родительский элемент, но просто ничего:

beforeRouteUpdate (to, from, next) {
    const answer = window.confirm('Do you really want to leave? you have unsaved changes!')
    if (answer) {
      next()
    } else {
      next(false)
    }
},

Мой URL:

http://www.example.com/library?id=huf2i783fh8

Затем <ResourceView v-if="$route.query.res"></ResourceView> запустит компонент. Когда пользователь нажимает обратно в браузере, мой URL меняется на:

http://www.example.com/library

Затем он закрывает / останавливает компонент, но не должен, ему нужно запросить are you sure?, затем при подтверждении изменения, а не при отмене.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...