第一步:
axios請求頭設置
import axios from 'axios'
import { store } from './store' // 引入vuex
axios.interceptors.request.use(
config => {
config.cancelToken = new axios.CancelToken(function (cancel) {
store.commit('pushToken', {cancelToken: cancel})
})
return config
}
)
第二步:
利用vuex,新建一個store.js,將取消方法cancel放到數組中,然后在路由守衛中把數組中存有的cancel方法都執行
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export const store = new Vuex.Store({
state: {
cancelTokenArr: [] // 取消請求token數組
},
mutations: {
pushToken (state, payload) {
state.cancelTokenArr.push(payload.cancelToken)
},
clearToken (state) {
state.cancelTokenArr.forEach(item => {
item('路由跳轉取消請求')
})
state.cancelTokenArr = []
}
}
})
第三步:
監聽路由
router.beforeEach(function (to, from, next) {
store.commit('clearToken') // 取消請求
next()
})
https://my.oschina.net/u/4309525/blog/3281330
http://www.axios-js.com/zh-cn/docs/#取消