Почему никогда не вызывается beforeLeaveRoute? - PullRequest
1 голос
/ 06 мая 2020

Я не понимаю, как beforeLeaveRoute должен работать в VueRouter. Триггер никогда не вызывается. Вот мой код:

src / App. vue

<template>
      <router-view/>
</template>
<script>
export default {
 name: 'App',
};
</script>

src / router / index. js

import Vue from 'vue'
import VueRouter from 'vue-router'
import PageOne from '../views/PageOne'
import PageTwo from '../views/PageTwo'

Vue.use(VueRouter)

export default new VueRouter({
  routes: [
    {
      path: '/pageone',
      name: 'pageone',
      component: PageOne,
    },
    {
      path: '/pagetwo',
      name: 'pagetwo',
      component: PageTwo,
    },
  ]
})

src / views / PageOne. vue

<template>
    <router-link to="/turbines">Go to page two</router-link>
</template>

<script>
export default {
    name: 'PageOne',
    beforeRouteLeave (to, from, next) {
        console.log("beforeLeaveRoute PageOne");
    },
}
</script>

src / views / PageTwo. vue

<template>
  <router-link to="/towers">Go to page one</router-link>
</template>

<script>
export default {
    name: 'PageTwo',
    beforeRouteLeave (to, from, next) {
        console.log("beforeLeaveRoute PageTwo");
    }
}
</script>

Код терпит неудачу без каких-либо ошибок. Ссылки работают, страница перемещается со страницы один на страницу вторую и обратно при нажатии, но я не получаю журналов консоли от триггера beforeLeaveRoute и не могу контролировать выход из маршрута, вызывая next.

Использование: vue 2.6.10 и vue -маршрутизатор 3.1.3

Ответы [ 2 ]

2 голосов
/ 06 мая 2020

Я не уверен, но я думаю, что это не сработает, если вы не вызовете функцию next() в конце:

beforeRouteLeave (to, from, next) {
  console.log('TEST')
  next()
}
1 голос
/ 06 мая 2020

Я думаю, вы ошибаетесь, когда пишете коды

<template>
  <router-link to="/towers">Go to page one</router-link>
</template>

<script>
export default {
    name: 'PageTwo',
    beforeRouteLeave(to, from, next) {
        console.log("beforeLeaveRoute PageTwo");
    }
}
</script>

вы не могли написать beforeLeaveRoute вместо этого вы должны были написать beforeRouteLeave, имеет ли это смысл?

...