我是 vue 新手,我不明白我在這裡做錯了什麼。
我有這個簡單的元件:
<template> <template v-if="loading"> Loading... </template> <template v-else> <div class="row"> {{ row }} </div> </template> </template> <script> import { api } from 'src/boot/axios'; import { useUserLoginStore } from 'src/stores/UserLoginStore'; export default { async mounted() { this.loading = true try { const res = await api.get(`/v-cards/slug/${this.$route.params.slug}`, { headers: { Authorization: `Bearer ${useUserLoginStore().userToken}`, } }); this.rows = await res.data this.loading = false console.log('rows', this.rows) } catch (error) { this.error = true console.log(error) this.loading = false } }, data() { return { loading: false, row: [], } }, } </script>
但是當我渲染頁面時,我只看到一個空數組。 api 呼叫沒問題,因為我在控制台日誌中看到了正確的資料。
P粉7148447432023-09-13 12:43:47
您等待 res.data
有什麼具體原因嗎?您已經在等待上面的 api 呼叫響應。我相信刪除 res.data
前面的等待應該可以解決您的問題。
更改此行:
this.rows = await res.data
對此:
this.rows = res.data
這是假設 res.data
正是您期望的陣列。並且不嵌套在另一個物件屬性中。
此外,在模板中,您應該使用rows
而不是row