您现在的位置是:首页 >其他 >记录在vue3上注入axios依赖网站首页其他
记录在vue3上注入axios依赖
简介记录在vue3上注入axios依赖
在写的过程中出现了一些问题,所以记录一下步骤
首先下载axios
npm install axios
方式一:局部设置axios
axios下载完毕后在main.ts里面导入依赖

在要用的组件下面写入如下代码,我这里是自建的Movie.vue,注意:axios.get('http://localhost:8088/user/findAll')这个里面的网址改成自己想要连接的网址
<template>
<div>
<button @click="increment()"></button>
</div>
</template>
<script lang="ts">
import axios from 'axios'
import { inject,ref,onBeforeMount,onMounted,getCurrentInstance } from 'vue'
export default {
setup() {
function increment() {
axios.get('http://localhost:8088/user/findAll')
.then(response => console.log(response.data))
.catch(error => console.error(error));
}
// 不要忘记同时暴露 increment 函数
return {
count,
sm,
increment
}
}
}
</script>
<style></style>
然后保存并运行

network里面可以找到网络传输协议

方式二:全局设置axios
与方式一的区别在于,组件连接地址时只用写端口后的路径如,“http://localhost:8088/user/findAll”中的“/user/findAll”,这样后端更改端口的时候不用在前端里面一个一个去改路径
mian.ts中

import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'
import axios from 'axios'
const app = createApp(App)
//配置请求根路径
axios.defaults.baseURL='http://localhost:8088'
将axios作为全局的自定义属性,每个组件可以在内部直接访问
app.config.globalProperties.$http = axios
// console.log('Global $http configured:', app.config.globalProperties.$http);
//配置elementplus
app.use(ElementPlus)
app.mount('#app')
在shims-vue.d.ts里面写入
import axios from 'axios';
declare module 'vue' {
interface ComponentCustomProperties {
$http: typeof axios;
$translate: (key: string) => string; // 如果你也需要支持国际化等其他全局属性
}
}
在tsconfig.json里面查看includ是否有shims-vue.d.ts的路径,一般shims-vue.d.ts的路径位于src根目录下,所以路径写为"src/**/*.d.ts"

自己创建的组件Movie.vue中写入代码,注意: $http.get('/user/findAll'),'/user/findAll'改为自己需要连接的相对地址
<template>
<div>
<h1 v-for="names in sm" :key="names.id">{{ names.name }}</h1>
<el-button @click="increment()"></el-button>
</div>
</template>
<script lang="ts">
import { inject,ref,onBeforeMount,onMounted,getCurrentInstance } from 'vue'
export default {
setup() {
// 注入 $http 服务,用函数来钩当前实例
const currentInstance = getCurrentInstance()
const $http = currentInstance?.appContext.config.globalProperties.$http
// console.log('$http:', $http)
function increment() {
// 在 JavaScript 中需要 .value
count.value++
}
//在组件挂载完成后调用
onMounted(() => {
if ($http) {
$http.get('/user/findAll')
.then(response => console.log(response.data))
.catch(error => console.error(error));
} else {
console.error('$http is not available');
}
})
// 不要忘记同时暴露 increment 函数
return {
count,
sm,
increment
}
}
}
</script>
<style></style>
不用点击按钮就可以打印数据

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。





QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
U8W/U8W-Mini使用与常见问题解决
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结