У меня есть три страницы home, about & details
, и я добавил keydown
прослушиватель событий в ловушку жизненного цикла Vue mounted
для каждой страницы, поэтому всякий раз, когда пользователь нажимает ctrl + rightArrow
, я запускаю метод nextPage()
, который будет выдвигатьследующая страница маршрутизатора vue, аналогично ctrl + leftArrow
должна вызвать prevPage()
.Я реализую одинаковую функциональность на каждой странице с разными маршрутами в nextPage() & prevPage()
.Здесь проблема в том, что, хотя я не добавил прослушиватель keydown
на некоторых страницах, событие запускается и перемещается к маршрутам от ранее загруженного прослушивателя событий, а предыдущие прослушиватели запускаются несколько раз.
export default {
mounted() {
window.addEventListener('keydown', this.handleKeyPress);
},
methods: {
handleKeyPress(e) {
if (e.ctrlKey && e.keyCode === 37) { // Previous page
this.prevPage();
} else if (e.ctrlKey && e.keyCode === 39) { // Next page
this.nextPage();
}
},
nextPage() {
this.$router.push({ name: 'about' });
},
prevPage() {
this.$router.push({ name: 'home' });
}
}
}