首页 > 其他分享 >Vue全局挂载axios

Vue全局挂载axios

时间:2023-03-20 10:23:45浏览次数:47  
标签:qs axios Vue 挂载 import 全局

前言
在vue开发过程中我们有时会把需要的一些模块挂载的全局,以便在各个组件或页面中使用。vue2与vue3中全局挂载是有一些不同的。

一、全局挂载
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

vue2中挂载全局
在vue2项目中,在入口文件main.js中通过Vue.prototype挂载全局方法对象。

import Vue from 'vue'
import Axios from 'axios
import utils from '@/utils'
import qs from 'qs'
...
//挂载全局对象
Vue.prototype.$http = Axios;
Vue.prototype.$qs = qs
....
vue3中挂载全局
vue3中取消了Vue.prototype,需要使用官方提供的globalPropertiesAPI在全局挂载方法和属性。

import { createApp } from 'vue'
import App from './App.vue'
import router from './router/index'
import axios from './utils/axios'
import qs from 'qs'

const app = createApp(App)
//全局挂载
app.config.globalProperties.$axios = axios;
app.config.globalProperties.$qs = qs;

...

二、使用全局
在vue2中使用
vue2中使用this.$http , this.$qs

<script>
export default {
data() {
return {
dataList: []
}
},
mounted() {
this.getList()
},
methods: {
getList() {
this.$http({
url: 'url地址'
}).then(res=>{
let { data } = res.data
this.dataList = data
})
},
},
}
</script>
在vue3中 使用
在vue3的setup中是使用getCurrentInstanceAPI获取全局对象

//方法一
<script>
import {useRouter} from 'vue-router';
import {toRefs,getCurrentInstance} from 'vue';
export default{
setup(){
const router = useRouter();
const {proxy} = getCurrentInstance();
const submit = () =>{
proxy.$axios.post('/adminUser/login',{
userName:state.ruleForm.username || '',
passwordMd5:md5(state.ruleForm.password)
}).then(res=>{
console.log(res)
})
}
return{
submit
}
}
mounted(){
this.submit()
}
}
</script>

.....
//方法二:
...
setup(){
const currentInstance = getCurrentInstance()
const {$axios,$route} = currentInstance.appContext.config.globalProperties
function submit(){
$axios.post('/adminUser/login',{
userName:state.ruleForm.username || '',
passwordMd5:md5(state.ruleForm.password)
}).then(res=>{
console.log(res)
})
}
}
通过getCurrentInstance()可以得到许多的全局对象。

总结
vue2中通过Vue.prototype来挂载全局对象,然后通过this.$XXX来获取全局对象。

vue3中通过app.config.globalProperties.$xxx = xxx来挂载全局对象,然后有两种方法来获取:

通过getCurrentInstance()方法获取上下文,这里的proxy就相当于this。例如:proxy.$axios
通过getCurrentInstance()方法获取当前实例,在根据当前实例找到全局实例对象appContext,进而拿到全局实例的config.galbalProperties。

标签:qs,axios,Vue,挂载,import,全局
From: https://www.cnblogs.com/matd/p/17235364.html

相关文章

  • Vue——initEvents【六】
    前言前面我们简单的了解了vue初始化时的一些大概的流程,这里我们详细的了解下具体的内容;内容这一块主要围绕init.ts中的initEvents进行剖析,初始化生命周期之后紧接着......
  • node.js webpack vue-cli vue
    1.node.js提供了javascript在后端运行的环境。没有node.js,javascript只能在浏览器运行;2.webpack是基于node.js的前端项目部署打包工具3.npm是node自带的包管理工具4.vue......
  • vue中使用父传子和子传父
    以下内容仅作为个人学习使用1、子组件向父组件传递数据子组件Header绑定点击事件在methods里面自定义父组件父组件使用在methods里面的事件2、父组件向子......
  • Vue插件:Vue-resource github搜索示例
     1:安装插件  vue-resourcevue的插件库,在vue1.0年代使用几率很高......
  • vue实现图片隐藏
    页面效果:单击图片时图片隐藏显示背景,再次点击重新显示图片。 实现流程:第一步:创建web项目,导入vue.js 第二步:实例化vue对象,在页面中引入<script>标签,并在<script>......
  • Vue2入门之超详细教程四-数据绑定
    1、简介数据绑定分为单向数据绑定和双向数据绑定,上一章节中出现的v-bind就属于单向数据绑定。单向绑定(v-bind):数据只能从data流向页面双向绑定(v-model):数据不仅......
  • Vue axios简易封装
    1.安装axiosnpminstallaxios-g 2.创建utils文件夹,新建文件request.js对axios进行封装3.设置请求超时通过axios.defaults.timeout设置默认的请求超时时间。例......
  • SpringBoot+Vue+EasyExcel实现excel简单导入导出
    1.先导入EasyExcel依赖<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.......
  • 谈谈 Vue shallowRef 和 shallowReactive
    深层次响应式reactive和ref创建的对象都是深层次的,对象的根属性和嵌套属性都是响应式的。深层次转换是递归地转为响应式,对象里的每个属性访问都将触发代理的依赖追踪,......
  • Vuex模块式开发
    背景:2个组件:home和search,将store仓库拆分成2个小仓库,home和search两个小仓库用于管理自己模块的数据store文件夹下新建2个文件夹:home和searchhome下index.js//home模块......