Detaillierte Erklärung zur Verwendung von this.$set in Vue

Detaillierte Erklärung zur Verwendung von this.$set in Vue

Verwendung von this.$set in Vue

Hintergrund : Als ich ein Front-End-Projekt schrieb, gab uns das Back-End ein JSON-Objekt und ich renderte es auf der Seite. Aus eigenen Gründen möchte ich dem zurückgegebenen Objekt jedoch ein Feld hinzufügen, also füge ich ein Feld hinein. Das Feld wird hinzugefügt, aber die Seitendarstellung ändert sich nicht. Später wurde mir klar, dass es nicht reagierte. Wenn dieses neue Feld reagieren soll, müssen wir this.$set verwenden, um Daten einzufügen.

Wenn in den Daten von Vue ein Objekt oder Array (der Wert im Array ist ein Objekt) deklariert oder zugewiesen wird, führt das Hinzufügen einer neuen Eigenschaft zum Objekt und das Aktualisieren des Werts dieser Eigenschaft nicht zu einer Aktualisierung der Ansicht.

verwenden

this.$set( target, key, value)

target : stellt die Datenquelle dar, also das Array oder Objekt, mit dem Sie arbeiten möchten

key : das zu bedienende Feld

value : die zu ändernden Daten

Hier ein kleines Beispiel:

Fügen Sie einem Objekt eine Alterseigenschaft hinzu und sorgen Sie dafür, dass sie sich reaktionsschnell ändert

Bildbeschreibung hier einfügen

<Vorlage>
  <div Klasse="Text">
      <p>{{Liste}}</p>
      <button @click="add">Alter++</button>
  </div>
</Vorlage>
<Skript>
Standard exportieren {
    Daten(){
        zurückkehren {
            Liste: {Name: "Zhang San"}
        }
    },
    Methoden: {
        hinzufügen(){
            if(!this.list.age){ // Wenn kein Altersattribut vorhanden ist, fügen Sie ein Altersattribut hinzu this.list.age=18
            }anders{
                diese.Liste.Alter++
            }
            konsole.log(diese.liste)
        }
    }
}
</Skript>

Wenn wir this.$set nicht zum Hinzufügen von Objekteigenschaften verwenden, ist der Effekt:

Die Daten werden zwar hinzugefügt, aber die Seite rendert die Alterseigenschaft nicht entsprechend.

Bildbeschreibung hier einfügen

Wenn wir this.$set(this.list,'age',18) verwenden, um ein Attribut hinzuzufügen. Wirkung:

Bildbeschreibung hier einfügen

Wir können sehen, dass die hinzugefügten Daten reagieren.

Warum responsiv?

Wenn Sie genau hinsehen, können Sie erkennen, dass this.$set über zusätzliche Methoden zum Abrufen und Festlegen des Alters verfügt, weshalb es reaktionsfähig ist.

Bildbeschreibung hier einfügen

analysieren

Das responsive Prinzip von Vue besteht darin, dass ein JavaScript-Objekt als Datenoption an eine Vue-Instanz übergeben wird. Vue durchläuft alle Eigenschaften dieses Objekts und verwendet Object.defineProperty, um alle diese Eigenschaften in Getter/Setter umzuwandeln. Diese Getter/Setter sind für den Benutzer unsichtbar, aber intern ermöglichen sie es Vue, Abhängigkeiten zu verfolgen und Änderungen zu melden, wenn auf Eigenschaften zugegriffen und diese geändert werden. Dabei ist zu beachten, dass verschiedene Browser Getter/Setter beim Drucken von Datenobjekten in der Konsole unterschiedlich formatieren. Die folgende Abbildung stammt aus der offiziellen Dokumentation.

Bildbeschreibung hier einfügen

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalt auf 123WORDPRESS.COM lesen können!

Das könnte Sie auch interessieren:
  • Verwendung und Unterschied von Vue.set() und this.$set()
  • Fallstudie zur dynamischen Datenbindung von this.$set in Vue
  • Lösung für den Vue-Fehler TypeError: this.$set ist keine Funktion
  • Vue.set() this.$set() löst Ansichtsaktualisierungen und Überlegungen aus
  • Analysieren von Vue.set() und this.$set() aus dem Vue-Quellcode

<<:  So fragen Sie die Schnittmenge von Zeiträumen in MySQL ab

>>:  PNG-Alpha-Transparenz in IE6 (vollständige Sammlung)

Artikel empfehlen

Detaillierte Erklärung zur Konfiguration einer statischen IP in Centos8

Nach der Installation von CentOS 8 wird beim Neus...

So entwerfen und optimieren Sie MySQL-Indizes

Inhaltsverzeichnis Was ist ein Index? Prinzip der...

Vue3 implementiert ein Beispiel für eine Nachrichtenkomponente

Inhaltsverzeichnis Komponentendesign Definieren d...

So stellen Sie ein SpringBoot-Projekt mit Dockerfile bereit

1. Erstellen Sie ein SpringBoot-Projekt und packe...

Podman bootet den Container automatisch und vergleicht ihn mit Docker

Inhaltsverzeichnis 1. Einführung in Podman 2. Vor...

Mysql-Datumsformatierung und komplexe Datumsbereichsabfrage

Inhaltsverzeichnis Vorwort Anwendungsszenarios fü...

Beispiele für einige Verwendungstipps für META-Tags in HTML

HTML-Meta-Tag HTML-Meta-Tags können verwendet wer...

Von CSS 3D zur räumlichen Koordinatenachse mit Quellcode

Einmal haben wir über das Würfelspiel gesprochen....