搜尋

首頁  >  問答  >  主體

無法透過 Axios 的 get 請求存取 Vue 中的數據

我是 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粉204079743P粉204079743449 天前736

全部回覆(1)我來回復

  • P粉714844743

    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

    #

    回覆
    0
  • 取消回覆