Maison  >  Article  >  interface Web  >  Comment résoudre le problème « Impossible de lire la propriété « xyz » de non définie » dans l'application Vue ?

Comment résoudre le problème « Impossible de lire la propriété « xyz » de non définie » dans l'application Vue ?

WBOY
WBOYoriginal
2023-08-19 13:39:201687parcourir

在Vue应用中遇到“Cannot read property 'xyz' of undefined”怎么解决?

Vue est un framework JavaScript très populaire qui aide les développeurs à créer des applications Web interactives. Lorsque nous développons des applications Vue, des messages d'erreur tels que "Impossible de lire la propriété 'xyz' d'undéfini" apparaissent parfois. Ce message d'erreur signifie que nous essayons d'accéder à une variable non définie ou d'accéder à une propriété d'objet, mais qu'en fait la propriété n'existe pas. Cet article présentera quelques méthodes pour résoudre cette erreur.

  1. Vérifiez si la variable est déclarée et initialisée correctement

Le message d'erreur "Impossible de lire la propriété 'xyz' d'undéfini" est très probablement dû au fait que la variable n'est pas déclarée ou initialisée correctement. Dans Vue, nous utilisons généralement l'attribut data pour déclarer et initialiser des variables dans les composants. Par conséquent, assurez-vous d'avoir correctement déclaré et initialisé les variables que vous souhaitez utiliser dans l'attribut data. Par exemple, dans le code ci-dessous, nous faisons référence à une variable foo non initialisée, ce qui entraînera l'erreur ci-dessus :

<template>
  <div>{{ foo.bar }}</div>
</template>
<script>
export default {
  data() {
    // 未初始化变量foo
  }
}
</script>

Pour résoudre ce problème, il suffit d'initialiser la variable foo dans l'attribut data :

<template>
  <div>{{ foo.bar }}</div>
</template>
<script>
export default {
  data() {
    return {
      foo: { bar: 'Hello World' }
    }
  }
}
</script>
  1. Check Is le nom de la propriété de l'objet est-il correct ? Si le message d'erreur "Impossible de lire la propriété 'xyz' d'undéfini" apparaît lorsque nous accédons à une propriété d'objet dans un composant Vue, c'est probablement parce que nous avons utilisé un nom de propriété incorrect. Vérifiez que la propriété existe dans l'objet auquel vous essayez d'accéder et assurez-vous d'utiliser le nom de propriété correct. Par exemple, dans le code ci-dessous, nous utilisons une propriété baz qui n'existe pas, ce qui entraînera l'erreur ci-dessus :
  2. <template>
      <div>{{ foo.baz }}</div>
    </template>
    <script>
    export default {
      data() {
        return {
          foo: { bar: 'Hello World' }
        }
      }
    }
    </script>
Pour résoudre ce problème, il suffit d'ajouter une propriété baz correcte à l'objet :

<template>
  <div>{{ foo.baz }}</div>
</template>
<script>
export default {
  data() {
    return {
      foo: { bar: 'Hello World', baz: 'Hello Vue' }
    }
  }
}
</script>

Vérifiez si une requête asynchrone est utilisée

  1. Si nous utilisons une requête asynchrone dans un composant Vue pour obtenir des données et que les données sont utilisées dans le composant, les données seront indéfinies avant d'obtenir les données, ce qui entraînera " Impossible de lire la propriété « xyz » du message d'erreur « undéfini ». Par exemple, dans le code ci-dessous, nous utilisons une requête asynchrone pour stocker les données dans la variable foo, mais avant que les données ne soient chargées, nous essayons d'accéder à la propriété foo.bar, ce qui entraînera l'erreur ci-dessus :
  2. <template>
      <div>{{ foo.bar }}</div>
    </template>
    <script>
    export default {
      data() {
        return {
          foo: {}
        }
      },
      created() {
        this.getData();
      },
      methods: {
        getData() {
          axios.get('/api/data')
            .then(response => {
              this.foo = response.data;
            })
        }
      }
    }
    </script>
To pour résoudre ce problème, nous pouvons utiliser la directive v-if pour masquer le composant concerné avant le chargement des données, puis afficher le composant après le chargement des données. Par exemple :

<template>
  <div v-if="foo.bar">{{ foo.bar }}</div>
</template>
<script>
export default {
  data() {
    return {
      foo: {}
    }
  },
  created() {
    this.getData();
  },
  methods: {
    getData() {
      axios.get('/api/data')
        .then(response => {
          this.foo = response.data;
        })
    }
  }
}
</script>

Dans le code ci-dessus, nous utilisons la directive v-if pour déterminer si la propriété foo.bar a été chargée. Le composant ne sera pas affiché tant que les données ne seront pas chargées. Le composant sera affiché une fois les données chargées.

Lors du développement d'une application Vue et de la rencontre du message d'erreur "Impossible de lire la propriété 'xyz' d'undéfini", nous devons d'abord vérifier si les variables sont correctement déclarées et initialisées, et vérifier si le nom de propriété d'objet correct est utilisé. Si nous utilisons une requête asynchrone pour obtenir des données, assurez-vous de masquer les données pendant le chargement du composant, puis d'afficher le composant jusqu'à ce que les données soient chargées. Avec ces méthodes, nous pouvons facilement résoudre cette erreur et continuer à développer notre application Vue.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn