高中不复,大学纷飞 2022-10-05 11:24 采纳率: 25%
浏览 40

vue中setup语法糖+ts使得全局配置axios失效

vue3中使用setup语法糖+ts为啥使得全局配置axios失效呀,忽略ts全局配置能起作用,添加ts提示我找不到axios,需要我在该组件局部重新再次引入,否则控制台提示axios没有被定义。另外依赖我是同时安装了axios和vue-axios的
main.ts代码
// 导入vue-axios模块
import VueAxios from 'vue-axios'
import axios from 'axios';
app.use(VueAxios, axios)
...
header.vue
<script setup lang="ts">
import { ref, computed, watch, onMounted } from 'vue'
//需要重新导入axios,否则提示我函数内的axios找不到,去掉下面这句话就报错,或者忽略ts语法
import axios from 'axios';
// 调用名人名言接口
const text = ref('')
function FamousQuotes() {
  let api = `/api/mingyan?token=wPsstR6XUhVezM8Y&format=json&typeid=1`
  axios
    .get(api)
    .then((res: any) => {
      // console.log(res.data)
      text.value = res.data.data.content
      console.log(text.value)
    })
}
onMounted(() => {
  axios.defaults.baseURL = '/api'
  FamousQuotes()
})
</script>
问题就是需要局部导入,可是按理来说全局配置axios应该是可以直接使用的呀!并且我不想忽视ts语法,因为其他的业务逻辑也会受到影响
想知道有什么办法可以直接使全局配置axios在ts语法下生效,尝试过app.config.globalProperties.$axios=Axios;和let { proxy } = getCurrentInstance();但好像也不起作用,求各位解答
  • 写回答

2条回答 默认 最新

  • MAXLZ 2022-10-05 11:46
    关注

    文档里说的挺清楚的,如果要在setup中使用,需要使用provide进行全局注入,然后在setup中使用inject进行提取。
    https://github.com/imcvampire/vue-axios

    // main.ts
    import { createApp } from 'vue'
    import App from './App.vue'
    import store from './store'
    import axios from 'axios'
    import VueAxios from 'vue-axios'
    
    const app = createApp(App).use(store)
    app.use(VueAxios, axios)
    app.provide('axios', app.config.globalProperties.axios)  // provide 'axios'
    app.mount('#app')
    
    // App.vue
    import { inject } from 'vue'
    
    export default {
      name: 'Comp',
      setup() {
        const axios: any = inject('axios')  // inject axios
    
        const getList = (): void => {
          axios
            .get(api)
            .then((response: { data: any }) => {
              console.log(response.data)
            });
        };
    
        return { getList }
      }
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 10月5日

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况