Heim  >  Artikel  >  Web-Frontend  >  Was soll ich tun, wenn bei der Verwendung von Axios in einer Vue-Anwendung die Meldung „Eigenschaft ‚xxx‘ von Null kann nicht gelesen werden“ angezeigt wird?

Was soll ich tun, wenn bei der Verwendung von Axios in einer Vue-Anwendung die Meldung „Eigenschaft ‚xxx‘ von Null kann nicht gelesen werden“ angezeigt wird?

王林
王林Original
2023-08-19 17:37:041668Durchsuche

在Vue应用中使用axios时出现“Cannot read property 'xxx' of null”怎么办?

In den letzten Jahren erfreut sich das Front-End-Framework Vue immer größerer Beliebtheit und es wird immer häufiger, Axios für Datenanfragen in Vue-Anwendungen zu verwenden. Bei der Verwendung von Axios können jedoch einige Fehler auftreten, z. B. „Eigenschaft ‚xxx‘ von Null kann nicht gelesen werden“. Dieser Fehler hat uns viel Ärger bereitet, da er keine eindeutige Meldung lieferte. Werfen wir einen Blick auf die Ursache und Lösung dieses Fehlers.

Lassen Sie uns zunächst über die Bedeutung dieses Fehlers sprechen. Typischerweise wird dieser Fehler durch den Eigenschaftszugriff auf ein leeres Objekt in einer Vue-Komponente verursacht. Zum Beispiel der folgende Code:

<template>
  <div>{{user.name}}</div>
</template>

<script>
import axios from 'axios'

export default {
  data() {
    return {
      user: null
    }
  },
  created() {
    axios.get('/api/user')
      .then(res => {
        this.user = res.data
      })
      .catch(error => {
        console.log(error)
      })
  }
}
</script>

In diesem Beispiel definieren wir eine Variable user in der Datenoption der Komponente mit einem Anfangswert von Null. In der erstellten Hook-Funktion verwenden wir axios, um eine Anfrage zum Abrufen von Benutzerdaten zu senden und die Daten der Benutzervariablen zuzuweisen. In der Komponentenvorlage verwenden wir {{user.name}}, um den Benutzernamen anzuzeigen. Dies führt jedoch zu einem Fehler „Eigenschaft „Name“ von Null kann nicht gelesen werden“.

Wie kann man diesen Fehler vermeiden? Es gibt zwei Methoden:

  1. Verwenden Sie die v-if-Direktive, um festzustellen, ob das Objekt leer ist. Wenn es leer ist, wird kein Attributzugriff durchgeführt:
<template>
  <div v-if="user">{{user.name}}</div>
</template>

<script>
import axios from 'axios'

export default {
  data() {
    return {
      user: null
    }
  },
  created() {
    axios.get('/api/user')
      .then(res => {
        this.user = res.data
      })
      .catch(error => {
        console.log(error)
      })
  }
}
</script>

In diesem Beispiel verwenden wir die v-if-Direktive in Die Komponentenvorlage bestimmt den Benutzer. Wenn sie leer ist, wird kein Attributzugriff durchgeführt. Auf diese Weise wird der obige Fehler nicht auftreten.

  1. Definieren Sie Standardwerte für Objekte, um Null zu vermeiden:
<template>
  <div>{{user.name}}</div>
</template>

<script>
import axios from 'axios'

export default {
  data() {
    return {
      user: {
        name: ''
      }
    }
  },
  created() {
    axios.get('/api/user')
      .then(res => {
        this.user = res.data
      })
      .catch(error => {
        console.log(error)
      })
  }
}
</script>

In diesem Beispiel definieren wir ein Benutzerobjekt mit dem Standardwert {name: ''} in der Datenoption der Komponente, sodass auch wenn Die Axios-Anfrage schlägt fehl oder gibt ein Nullobjekt zurück, und wir werden nicht auf den Fehler „Eigenschaft ‚Name‘ von Null kann nicht gelesen werden“ stoßen.

Zusammenfassend lässt sich sagen, dass bei der Verwendung von Axios zum Durchführen von Datenanforderungen in Vue-Anwendungen möglicherweise die Fehlermeldung „Eigenschaft ‚xxx‘ von Null kann nicht gelesen werden“ auftritt. Die Ursache dieses Fehlers ist der Attributzugriff auf ein leeres Objekt. Wir können die v-if-Anweisung verwenden, um Urteile zu fällen oder einen Standardwert für das Objekt zu definieren, um diesen Fehler zu vermeiden.

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn bei der Verwendung von Axios in einer Vue-Anwendung die Meldung „Eigenschaft ‚xxx‘ von Null kann nicht gelesen werden“ angezeigt wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn