vue3 +pinia
在请求当中加拦截器实现跳转会有加载动画
mport axios from 'axios'
import { BASE_URL, TIMEOUT } from './config'
import useMainStore from '@/stores/modules/main'
const mainStore = useMainStore()
class HYRequest {
constructor(baseURL, timeout=10000) {
this.instance = axios.create({
baseURL,
timeout
})
this.instance.interceptors.request.use(config => {
mainStore.isLoading = true
return config
}, err => {
return err
})
this.instance.interceptors.response.use(res => {
mainStore.isLoading = false
return res
}, err => {
mainStore.isLoading = false
return err
})
}
vue-router.mjs:3451
ReferenceError: Cannot access 'useloading' before initialization
at index.js?t=1675772436365:8:16
百度搜索是变量提升,和执行顺序没搞懂
这块是代码 上部分截错跪求大佬
import axios from "axios";
import {BaseUrl,Timout} from './config'
import useloading from "@/pinia/loading";
//简单封装axios
const loading =useloading()
class Hyrequest{
constructor(baseURL,timout=1000){
this.intens=axios.create({
baseURL,
timout
})
请求拦截器
this.intens.interceptors.request.use(config => {
loading.isshowloading = true
return config
}, err => {
return err
})
this.intens.interceptors.response.use(config=>{
loading.isshowloading = false
return config
},err=>{
return err
})
}
request(config){
// loading.isshowloading=true
return new Promise((resolve,rejest)=>{
// loading.isshowloading=false
//then 返回成功的函数
this.intens.request(config).then(res=>{
resolve(res.data)
}
).catch(err=>{
// loading.isshowloading=false
rejest(err)
})
})
}
get(config){
return this.request({...config, method:"get"})
}
post(config){
return this.request({...config, method:"post"})
}
}
export default new Hyrequest(BaseUrl,Timout)