在Vue / Nuxt插件中使用重定向

时间:2020-10-09 04:33:13

标签: vue.js nuxt.js

在Vue / Nuxt应用程序中,我有一个带有以下代码的插件:

import Vue from 'vue';
import axios from 'axios';

axios.interceptors.response.use(res => {
  console.log('Interceptor response: ', res.data);

  return res;
},
err => {
    if (err.response.status === 401) {
      this.$store.dispatch(AUTH_LOGOUT);
      redirect('/');
    }
});

Vue.use(axios);

问题在于'redirect'和'this。$ store'都未定义。您能帮我如何使用重定向或存储在此vue / nuxt插件中吗?

1 个答案:

答案 0 :(得分:0)

您可以使用context变量。

示例:

plugins/axios.js

import axios from 'axios'

export default function (context, inject) {
  axios.interceptors.response.use(res => {
    console.log('Interceptor response: ', res.data);
    return res;
  }, err => {
    if (err.response.status === 401) {
      context.redirect('/');
      context.store.dispatch(AUTH_LOGOUT);
    }
  });

  inject('axios', axios)
}

Inject in $root & context