Метод router.go представляет собой низкоуровневый способ
навигации в истории браузера, предоставляемый Vue Router. Он напрямую
работает с объектом history и позволяет перемещаться по
истории вперед или назад на указанное количество шагов. В отличие от
методов push и replace, которые принимают
конкретный путь или имя маршрута, router.go ориентирован на
позицию в истории браузера.
router.go(n)
n — целое число, определяющее количество шагов в
истории.
0 обновляет текущий маршрут без изменения позиции в
истории.this.$router.go(-1);
Этот вызов аналогичен использованию
window.history.back(). Vue Router выполнит навигацию к
предыдущему маршруту в истории приложения.
this.$router.go(2);
В данном случае браузер пытается переместиться вперед на два шага в истории. Если вперед не существует столько шагов, навигация не произойдет.
this.$router.go(0);
Этот вариант полезен для перезагрузки текущего компонента маршрута
без изменения URL. При этом вызываются все навигационные хуки, такие как
beforeRouteUpdate.
router.push и router.replacerouter.push и router.replace ориентированы
на указанный маршрут, создают запись в истории (push)
или заменяют текущую запись (replace).router.go ориентирован на позицию в
истории, поэтому не требует указания маршрута и работает
исключительно относительно текущей позиции.router.go не генерирует ошибки, если
указанный шаг выходит за границы истории браузера — переход просто не
выполняется.go не
возвращает промис, что важно учитывать при цепочках
навигации.При вызове router.go происходят все стандартные вызовы
навигационных хуков:
beforeEachbeforeResolveafterEachbeforeRouteLeave и beforeRouteUpdate на
компонентах, если маршрут изменяетсяТаким образом, router.go интегрируется с системой
контроля навигации Vue Router так же, как и методы push и
replace.
methods: {
goBackOrReload() {
if (window.history.length > 1) {
this.$router.go(-1); // возвращаемся на предыдущий маршрут
} else {
this.$router.go(0); // перезагружаем текущий маршрут
}
}
}
В этом примере проверяется длина истории браузера. Если предыдущий маршрут существует, выполняется возврат. В противном случае выполняется обновление текущей страницы. Такой подход позволяет корректно обрабатывать сценарии при прямом входе на страницу, когда история браузера пуста.
Метод router.go представляет собой удобный инструмент
для навигации, ориентированной на историю, позволяя реализовать
поведение кнопок “назад” и “вперед”, обновление текущего маршрута и
другие сценарии, где важно управлять историей браузера напрямую.