当前位置:   article > 正文

vue3实现并挂载axios_axios vue3挂载

axios vue3挂载

在 vue2.x 中我们通过给 vue 实例的原型绑定全局变量的方法来定义全局属性

/* 挂载全局属性
Vue.prototype.$axios = axios;
Vue.prototype.$utils = Utils;
*/

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

那么,在 vue3 中如何全局绑定 axios, router, store呢?

config.globalProperties.$axios=axios

首先在入口文件 main.ts 中通过 createApp() 创建 vue 根实例,在根实例上绑定axios,
安装npm i axios

main.ts

import { createApp } from 'vue'
import axios from 'axios'
import App from './App.vue'

const app = createApp(App)

// 通过 config.globalProperties
app.config.globalProperties.$axios = axios

app.mount('#app')

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
<script setup lang="ts">
import { ref, getCurrentInstance, reactive } from 'vue'
// const list = ref<any[]>()
const list = reactive([])
// 使用
const currentInstance: any = getCurrentInstance()
const { $axios } = currentInstance.appContext.config.globalProperties
/**
    获取全局绑定的$axios, router, store等
    第一种方法
    const currentInstance = getCurrentInstance()
    const { $axios } = currentInstance.appContext.config.globalProperties
    
    第二种方法
    const { proxy } = getCurrentInstance()
    通过 proxy.$axios,其实这里的 proxy 就相当于 this
    通过打印console.log('currentInstance', currentInstance) 我们可以看到许多绑定到根实例上全局属性都可以获取到。
 * 
 */
const getData = (): any => {
  console.log('hellow')
  $axios({
    url: 'http://jsonplaceholder.typicode.com/posts',
  })
    .then((res: any) => {
      //   list.value = res.data // 1.可以通过.value赋值
      list.push(...res.data) //  2.或者通过push(...res)赋值
    })
    .catch(new Error('服务器错误'))
}
</script>

<template>
  <button @click="getData">请求数据</button>
  <ul>
    <li v-for="item in list" :key="item.Id">{{ item.Id }}{{ item.title }}</li>
  </ul>
</template>

<style scoped></style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/299882
推荐阅读
相关标签
  

闽ICP备14008679号