роутер в vue не определен - PullRequest
       8

роутер в vue не определен

0 голосов
/ 11 февраля 2020

Я добавил перехватчик ax ios в свое приложение. vue, чтобы перехватить все состояния 401, чтобы я мог выйти из системы. Я пытаюсь перенаправить на страницу входа. Я продолжаю получать сообщение "Не удается прочитать свойство $ router 'из неопределенного", не уверенный в чем проблема. Любая помощь? Также есть лучший способ обрабатывать ошибки состояния ax ios http во всем мире. Вместо проверки, если статус 400,401 и c для каждого компонента, который делает запрос http.

created: function () {
  axios.interceptors.response.use(undefined, function (err) {
    return new Promise(function (resolve, reject) {

      if (err.response.status=== 401 ) {

        this.$router.push({ name: 'loginview' })

    }
      throw err;
   });
  });
}

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

Основная проблема в том, что this не будет ссылаться на экземпляр компонента внутри внутренних функций. Существуют различные способы исправить это, например, вместо этого использовать функции стрелок.

В приведенном ниже примере я также удалил new Promise, так как в этом нет необходимости.

created: function () {
  // Using an arrow function preserves the 'this' value
  axios.interceptors.response.use(undefined, err => {
    if (err.response.status === 401 ) {
      this.$router.push({ name: 'loginview' })
    }

    // You may not want to return this in the 401 case
    return Promise.reject(err)
  });
}
0 голосов
/ 11 февраля 2020

вы можете сделать что-то вроде этого:

created: function () {
  var router=this.$router;
  axios.interceptors.response.use(undefined, function (err) {
    return new Promise(function (resolve, reject) {

      if (err.response.status=== 401 ) {

        router.push({ name: 'loginview' })

    }
      throw err;
   });
  });
}
...