La propriété ou la méthode 'componentNames' n'est pas définie même si elle est définie
P粉514001887
P粉514001887 2024-02-17 21:22:44
0
1
373

J'ai reçu l'erreur comme indiqué dans le titre. J'ai lu un peu sur cette erreur et la plupart des réponses indiquent qu'elle est liée au référencement d'une propriété de méthode/données inexistante, ou est causée par une orthographe stupide. Dans le bloc de code ci-dessous, le problème ne se produit que lorsque je référence correctement la méthode componentNames 数据属性。我注意到,只有当我在 componentNames 上使用 Object.keys() existante (utilisée pour obtenir le nom du composant).

<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>

Erreur :

[Vue warn] : La propriété ou la méthode 'componentNames' n'est pas définie instance mais référencé lors du rendu.

P粉514001887
P粉514001887

répondre à tous(1)
P粉085689707

Essayez d'utiliser l'initialisation d'un tableau vide componentNames,然后在创建的钩子内将 Object.keys($options.components) attribuez-lui :

data() {
    return {
      componentNames: []
    }
  },
created(){
    this.componentNames=Object.keys(this.$options.components)
},
  components: {
    A,
    B
  },
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!