vue3如何实现挂载并使用axios
作者:furfur-jiang 时间:2023-07-02 16:46:06
vue3挂载并使用axios
首先在main.js中引入axios并挂载到app.config.globalProperties上
axios配置文件放置./assets/js/axios
main.js
import {
createApp
} from 'vue'
import App from './App.vue'
import './index.css'
import axios from './assets/js/axios';
const app = createApp(App);
app.use(router).use(ElementPlus).mount('#app')
app.config.globalProperties.$http = axios;
其次配置axios.js文件
axios.js
import axios from "axios";
import qs from "qs";
import {
ElMessageBox
} from 'element-plus';
// axios.defaults.baseURL = '' //正式
axios.defaults.baseURL = 'http://localhost:8089' //测试
//post请求头
axios.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded;charset=UTF-8";
//设置超时
axios.defaults.timeout = 10000;
axios.interceptors.request.use(
config => {
return config;
},
error => {
return Promise.reject(error);
}
);
axios.interceptors.response.use(
response => {
if (response.status == 200) {
return Promise.resolve(response);
} else {
return Promise.reject(response);
}
},
error => {
ElMessageBox(JSON.stringify(error), '请求异常', {
confirmButtonText: '确定',
callback: action => {}
});
}
);
export default {
post(url, data) {
return new Promise((resolve, reject) => {
axios({
method: 'post',
url,
data: qs.stringify(data),
})
.then(res => {
resolve(res.data)
})
.catch(err => {
reject(err)
});
})
},
get(url, data) {
return new Promise((resolve, reject) => {
axios({
method: 'get',
url,
params: data,
})
.then(res => {
resolve(res.data)
})
.catch(err => {
reject(err)
})
})
}
};
最后在.vue中使用
通过getCurrentInstance拿到的ctx就有了$http可以调用
import {
defineComponent,
getCurrentInstance,
reactive,
toRefs,
} from "vue";
export default defineComponent({
name: "demo",
props: {},
components: "",
setup(props, context) {
//引用全局变量
const { ctx } = getCurrentInstance();
console.log(ctx);
let state = reactive({
ruleForm: {
username: "fur",
password: "123",
}
});
function submitForm() {
ctx.$http.post("/login/xxx", ruleForm).then((res) => {
//请求成功
});
}
return {
...toRefs(state),
submitForm,
};
},
});
vue全局挂载axios
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
</div>
<script src="./node_modules/vue/dist/vue.js"></script>
<script src="./node_modules/axios/dist/axios.js"></script>
<script>
// 全局挂载axios:给Vue函数添加一个原型属性$axios指向Axios
// 好处是在vue实例或组件中不用重复引用Axios,直接用this.$axios就能执行axios方法
Vue.prototype.$axios = axios;
var App = {
template: `
<div><button @click="sendAjax">发请求</button></div>
`,
methods: {
sendAjax() {
console.log(this.$axios);
}
}
};
new Vue({
el: '#app',
data() {
return {
}
},
template: `
<App />
`,
components: {
App
}
});
</script>
</body>
</html>
来源:https://jiangmq.blog.csdn.net/article/details/116210864
标签:vue3,挂载,axios
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Window 64位下python3.6.2环境搭建图文教程
2023-07-26 02:22:45
![](https://img.aspxhome.com/file/2023/5/102875_0s.jpg)
Python中如何实现MOOC扫码登录
2021-10-08 14:24:50
![](https://img.aspxhome.com/file/2023/1/66861_0s.png)
Python supervisor强大的进程管理工具的使用
2021-04-15 09:11:58
![](https://img.aspxhome.com/file/2023/0/75150_0s.png)
asp函数InstrRev()介绍及获取文件名例子
2007-11-19 19:01:00
Tortoise-orm信号实现及使用场景源码详解
2021-12-18 23:01:45
Java正则表达式匹配字符串并提取中间值的方法实例
2022-02-06 11:22:43
python 遍历可迭代对象的实现方法
2021-03-02 07:13:07
python如何变换环境
2021-06-02 19:19:44
![](https://img.aspxhome.com/file/2023/7/118647_0s.png)
Django零基础入门之模板变量详解
2023-03-19 11:17:16
![](https://img.aspxhome.com/file/2023/2/82722_0s.jpg)
python 如何对Series中的每一个数据做运算
2023-11-19 23:33:07
![](https://img.aspxhome.com/file/2023/7/82517_0s.png)
用原生js做单页应用
2024-04-16 09:51:27
python实现人性化显示金额数字实例详解
2023-11-04 12:40:10
Python爬虫爬取博客实现可视化过程解析
2023-12-16 08:58:33
![](https://img.aspxhome.com/file/2023/6/85186_0s.png)
对Python中小整数对象池和大整数对象池的使用详解
2023-02-17 18:13:49
验证码-挑战你的智慧
2008-09-10 13:08:00
![](https://img.aspxhome.com/file/UploadPic/20089/10/2008910131428605s.jpg)
Windows安装MySQL8.0.28.0.msi方式(图文详解)
2024-01-24 14:55:24
![](https://img.aspxhome.com/file/2023/6/115316_0s.png)
python使用ProjectQ生成量子算法指令集
2023-03-17 20:26:51
vue watch监控对象的简单方法示例
2024-05-05 09:11:00
Pycharm 2020.1 版配置优化的详细教程
2023-06-30 23:11:55
![](https://img.aspxhome.com/file/2023/1/103461_0s.jpg)
预防PHPDDOS的发包攻击别人的方法(iis+linux)
2023-10-14 04:09:34