感谢阅读我的问题。
我正在尝试使用Vue.js 3.2和axios运行新的<script setup>
语法(Composition API(。使用正常语法,我的代码看起来像:
<script>
import axios from 'axios'
export default {
name: 'GetRequest',
data () {
return {
infos: null
}
},
mounted () {
axios
.get('https://api.predic8.de/shop/products/')
.then(response => (this.infos = response.data))
}
}
</script>
<template>
<div id="app">
{{ infos }}
</div>
</template>
这很好,但我使用了一个模板(https://github.com/justboil/admin-one-vue-tailwind)对于我的项目,它与新的CCD_ 2一起工作。
我已经找到了一些解决方案,比如:
<script setup>
import {onMounted} from "vue";
const {ref} = require("vue");
const axios = require("axios");
const info = ref([])
onMounted(async () => {
await axios
.get('https://api.predic8.de/shop/products/')
.then(response => {
this.info = response.data
})
})
</script>
<template>
<div id="app">
{{ infos }}
</div>
</template>
但它给了我这个.infs被分配了一个值,但从未使用过。有人知道我如何将值分配给变量并在<template>
中调用它吗?
更新:
我用infos.value
而不是this.infos
找到了解决方案
<script setup>
import {onMounted} from "vue"
const {ref} = require("vue")
const axios = require("axios")
const infos = ref([])
onMounted(async () => {
await axios
.get('https://api.predic8.de/shop/products/')
.then(response => {
infos.value = response.data
})
})
</script>
<template>
<div id="app">
{{ infos }}
</div>
</template>
```
最好使用inject
在每个组件中导入axios
。这样,如果需要的话,你可以创建一些拦截器。。。
首先,您应该为vue.js
安装axios插件。
> npm install --save axios vue-axios
安装完成后,只需导入axios
,如下所示:
main.js
import { createApp } from "vue";
import axios from "./plugins/axios";
import VueAxios from "vue-axios";
const app = createApp(App);
// Axios Plugin
app.use(VueAxios, axios);
app.provide("axios", app.config.globalProperties.axios);
在任何组件内
import { inject } from "vue";
const axios = inject('axios');
// using axios as usual
注意:我在组件示例中使用了<script setup>
。
PS:如果需要使用interceptors
,可以在./plugins/axios.js
文件中创建axios
实例,否则只需在main.js
文件中一如既往地导入axios
即可!
- 在您的模板中,您正在访问"infos";但是声明的变量是"0";信息">
- 在你的onMounted回调中,你的赋值应该没有";这个";只是";info=response.data">
在顶级脚本中声明的任何变量都可以从模板中访问。
更多信息请点击此处https://v3.vuejs.org/api/sfc-script-setup.htm在这里https://v3.vuejs.org/guide/composition-api-setup.html