Unterschied zwischen den erstellten und gemounteten Ereignissen in Vue.js

181

Die Dokumentation von Vue.j beschreibt die created und mountedEreignisse wie folgt:

created

Wird nach dem Erstellen der Instanz synchron aufgerufen. Zu diesem Zeitpunkt hat die Instanz die Verarbeitung der Optionen abgeschlossen, was bedeutet, dass Folgendes eingerichtet wurde: Datenbeobachtung, berechnete Eigenschaften, Methoden, Watch / Event-Rückrufe. Die Bereitstellungsphase wurde jedoch noch nicht gestartet, und die Eigenschaft $ el ist noch nicht verfügbar.

mounted

Wird aufgerufen, nachdem die Instanz gerade gemountet wurde, wobei el durch die neu erstellte vm. $ El ersetzt wird. Wenn die Stamminstanz in ein In-Document-Element eingebunden ist, ist vm. $ El auch beim Aufrufen in das Dokument eingebunden.

Dieser Hook wird beim serverseitigen Rendern nicht aufgerufen.

Ich verstehe die Theorie, aber ich habe zwei Fragen zur Praxis:

  1. Gibt es einen Fall wo created würde mounted?
  2. Wofür kann ich das createdEreignis in einer realen Situation (realer Code) verwenden?
weniger Zucker
quelle
13
createdwird früher aufgerufen, daher ist es sinnvoll, beispielsweise das Abrufen von Daten aus dem API-Backend auszulösen.
Egor Stambakio
4
Kann bestätigen, dass die Beispiele im Fullstack Vue-Buch alle created()zum Versenden von Aktionen für API-Aufrufe verwendet werden.
Chovy

Antworten:

255

created(): Da die Verarbeitung der Optionen abgeschlossen ist, haben Sie Zugriff auf reaktive dataEigenschaften und können diese bei Bedarf ändern. Zu diesem Zeitpunkt wurde DOM noch nicht bereitgestellt oder hinzugefügt. Sie können hier also keine DOM-Manipulation durchführen

mounted(): Wird aufgerufen, nachdem das DOM bereitgestellt oder gerendert wurde. Hier haben Sie Zugriff auf die DOM-Elemente und die DOM-Manipulation kann durchgeführt werden, um beispielsweise das innerHTML abzurufen:

console.log(element.innerHTML)

Also deine Fragen:

  1. Is there any case where created would be used over mounted?

Erstellt wird im Allgemeinen zum Abrufen von Daten aus der Backend-API und zum Festlegen von Dateneigenschaften verwendet. Wenn der SSR- mounted()Hook nicht vorhanden ist, müssen Sie Aufgaben wie das Abrufen von Daten nur im erstellten Hook ausführen

  1. What can I use the created event for, in real-life (real-code) situation?

Zum Abrufen aller anfänglich erforderlichen Daten, die gerendert werden sollen (wie JSON), von einer externen API und zum Zuweisen dieser Eigenschaften zu reaktiven Daten

data:{
    myJson : null,
    errors: null
},
created(){
    //pseudo code
    database.get().then((res) => {
        this.myJson = res.data;
    }).catch((err) => {
        this.errors = err;
    });
}
Vamsi Krishna
quelle
6
Wartet es beim Erstellen eines API-Aufrufs darauf, dass alle asynchronen Vorgänge abgeschlossen sind, bevor mit der nächsten Lebenszyklusphase fortgefahren wird?
Ominus
10
@Ominus nein es wartet nicht, Führen Sie diese fiddle- jsfiddle.net/1k26sqrx/] und überprüfen Sie die Konsolenprotokolle
Vamsi Krishna
1
Ich habe festgestellt, dass bei der Verwendung von mount () anstelle von created () verwendet wird. Vue testet, ob die eingestellte reaktive Variable tatsächlich als reaktive Variable existiert. Wenn nicht, wird ein Fehler ausgegeben. Dies ist in created () nicht der Fall. "Eigenschaft oder Methode" foo "ist nicht für die Instanz definiert, sondern wird beim Rendern referenziert. Stellen Sie sicher, dass diese Eigenschaft reaktiv ist."
Rob Juurlink