[英]Vue.js new script setup with axios
感謝您閱讀我的問題。
我正在嘗試使用 Vue.js 3.2 和 axios 運行新的<script setup>
語法。 使用正常語法,我的代碼看起來像:
<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 ),它適用於新的<script setup>
。
我已經找到了一些解決方案,例如:
<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>
但它給了我'this.infos'被分配了一個值但從未使用過。 有誰知道我如何將值分配給變量並在<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 vue-axios
安裝完成后,只需導入axios
,如下例所示:
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
即可!
在頂層腳本中聲明的任何變量都可以從模板中訪問。
更多信息在這里https://v3.vuejs.org/api/sfc-script-setup.htm和這里https://v3.vuejs.org/guide/composition-api-setup.ZFC356FDC70D28C7AEZ86D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.