为什么会使用
当一个页面的请求过长时,然后点击链接跳转到新的页面,会导致不必要的资源浪费,如果上一个接口出现报错情况,会误导用户导致体验感不好。
怎么使用
在axios设置
import axios from 'axios'
import store from '@/store'
import { getToken } from '@/utils/auth'
const service = axios. create ( {
baseURL: process. env. VUE_APP_BASE_API ,
timeout: 20000
} )
service. interceptors. request. use (
config => {
config. cancelToken = new axios. CancelToken ( cancel => {
store. commit ( 'addCancelToken' , cancel)
} )
return config
} ,
error => {
return Promise. reject ( error)
}
)
service. interceptors. response. use (
response => { } ,
error => {
if ( ! axios. isCancel ( error) ) {
}
}
)
在Vuex设置
import Vue from 'vue'
import Vuex from 'vuex'
Vue. use ( Vuex)
const state = {
cancelTokenArr: [ ]
}
const mutations = {
addCancelToken ( state, cancel) {
state. cancelTokenArr. push ( cancel)
} ,
clearCancelToken ( state) {
state. cancelTokenArr. forEach ( c => {
c ( )
} )
state. cancelTokenArr = [ ]
}
}
const store = new Vuex. Store ( {
state,
mutations
} )
export default store
路由跳转设置
router. beforeEach ( ( to, from , next) => {
store. commit ( 'clearCancelToken' )
next ( )
} )