首頁  >  問答  >  主體

屬性或方法“componentNames”未定義,即使已定義

我收到如標題所示的錯誤。我讀了一些有關此錯誤的信息,大多數答案都說它與引用不存在的方法/數據屬性有關,或者是由愚蠢的拼寫引起的。在下面的程式碼區塊中,我正確引用了現有的 componentNames 資料屬性。我注意到,只有當我在 componentNames 上使用 Object.keys() 方法(用於取得元件名稱)時,才會出現此問題。

<template>
  <v-container fluid>
    <v-row dense>
      <v-col
        v-for="(comp, n) in componentNames"
        :key="n"
        :cols="n === 0 ? 2 : 10"
        >    
          <v-card>
            <component :is="comp"></component>
          </v-card>

      </v-col>
    </v-row>
  </v-container>
</template>

<script>
import A from '../views/A.vue';
import B from '../views/B.vue';

export default {
  name: 'Project',

  data() {
    return {
      //componentNames: ['A', 'B']  // when I use this line of code then it works perfectly
      componentNames: Object.keys(this.$options.components) // however, this line doesn't work
    }
  },
  components: {
    A,
    B
  },
};
</script>

錯誤:

[Vue warn]: 屬性或方法「componentNames」未定義 實例但在渲染期間引用。

P粉514001887P粉514001887244 天前368

全部回覆(1)我來回復

  • P粉085689707

    P粉0856897072024-02-18 19:27:15

    嘗試使用空數組初始化 componentNames,然後在建立的鉤子內將 Object.keys($options.components) 指派給它:

    data() {
        return {
          componentNames: []
        }
      },
    created(){
        this.componentNames=Object.keys(this.$options.components)
    },
      components: {
        A,
        B
      },

    回覆
    0
  • 取消回覆