如何在 Vue 3 Composition API 中创建 Axios 插件
2022-08-04
5172
我正在使用 Vue 3 Composition API 和 TypeScript。
我想制作 Axios 插件以在我的项目中使用。
这是我的代码
plugins/axios.js
import axios from 'axios'
const axiosInstance = axios.create({
baseURL: import.meta.env.VITE_API_URL,
})
export default {
install: (app, options) => {
app.config.globalProperties.$axios={ ...axiosInstance }
}
}
main.ts
import { createApp } from 'vue'
import axiosPlugin from '@/plugins/axios.js'
import App from './App.vue'
const app = createApp(App)
app.use(axiosPlugin, {})
app.mount('#app')
我的组件
<script setup lang="ts">
import { $axios } from 'vue'
但是我在最后一段代码中出现 错误
模块 '"vue"' 没有导出的成员 '$axios'.ts(2305)
可能在声明 axios 插件时出了点问题
出了什么问题?
1个回答
您的 axios 插件未在 Vue 库中公开,因此导入不起作用。您的插件已挂接到 Vue 实例。在 Vue 2(或选项 API)中,您可以使用
this
关键字,但在设置方法中,您需要使用
getCurrentInstance
。试试这个
<script setup lang='ts'>
import { getCurrentInstance } from 'vue'
const app = getCurrentInstance()
const axios = app.appContext.config.globalProperties.$axios
</script>
或者,您可以使用提供/注入方法。
在您的 main.ts 中
app.provide('axios', axiosInstance);
在您的组件中
import { inject } from 'vue';
const axios = inject('axios');
Stutje
2022-08-04