Vue: beforeEach не является функцией - PullRequest
0 голосов
/ 30 января 2019

Изменение маршрута не прокручивается вверх, поэтому Vue создатель советует использовать навигационную охрану.В обновленная версия :

Router.beforeEach(function (to, from, next) {
  window.scrollTo(0, 0)
  next();
})

Perfect, за исключением того, что она приводит к этой фатальной ошибке в моем приложении: ncaught TypeError: vue_router__WEBPACK_IMPORTED_MODULE_1 __. Default.beforeEach не является функцией

Почему?

На всякий случай вот мой полный файл router.js:

import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home.vue'
import PastEvents from './views/PastEvents.vue'
import BasicPage from './views/BasicPage.vue'

Vue.use(Router)

export default new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home
    },
    {
      path: '/past-events',
      name: 'past-events',
      component: PastEvents
    },
    {
      path: '/basic-page',
      name: 'basic-page',
      component: BasicPage
    }
  ]
})

Router.beforeEach(function (to, from, next) {
  window.scrollTo(0, 0)
  next();
})

1 Ответ

0 голосов
/ 30 января 2019

Вы прописали Router, это имя класса.Что вы хотите сделать, это добавить свой .beforeEach() к экземпляру маршрутизатора.В документации вы заметите, что это всегда строчные буквы router, к которым они добавляют охранники.

В настоящее время вы немедленно экспортируете экземпляр из модуля, поэтому вам нужно сначала добавитьэто переменная, когда вы создаете new Router, а затем добавляете в нее свои предложения .beforeEach() перед тем, как окончательно экспортировать ее.

const router = new Router({
  ...
})

router.beforeEach( ... )

export default router
...