main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import axios from './utils/axios'
const app = createApp(App)
app.use(store).use(router).use(i18n).use(ElementPlus)
app.config.globalProperties.axios = axios
app.mount('#app')
utils文件夹下的axios.js
import axios from "axios"
if (process.env.NODE_ENV === 'production') {
axios.defaults.baseURL = location.pathname
} else {
axios.defaults.baseURL = '/api'
}
axios.interceptors.request.use(function (config) {
return config
}, err => {
return Promise.reject(err)
})
axios.interceptors.response.use(response => {
return response.data || response
}, error => {
return Promise.resolve(error.response)
})
export default axios;
组件引用如下
<script>
import { getCurrentInstance, onMounted } from 'vue'
export default {
setup(props,ctx) {
const proxy = getCurrentInstance()
onMounted(() => {
console.log(proxy.axios);
})
return {}
}
}
script>
对于vue3还不是特别熟悉,就得做项目了,找的项目案例都是每个组件引入axios的,网上找的这种方法行不通,求各路神仙指点啊~!感恩!
const cns = getCurrentInstance()
console.log(cns.appContext.config.globalProperties.$user)
// or
const {proxy} = getCurrentInstance()
console.log(proxy.$user)