Bei der Entwicklung mit Vue.js ist die am häufigsten verwendete Funktion die reaktionsfähige Datenbindung. Mit dieser Funktion können Entwickler eine automatische Synchronisierung zwischen Ansichten und Daten erreichen, indem sie Daten deklarieren und binden. Aber manchmal kann es vorkommen, dass wir auf ein Problem stoßen, bei dem die Antwortdaten von Vue nicht reagieren, was bedeutet, dass wir die Daten ändern, die Ansicht jedoch nicht aktualisiert wird. Dies ist ein häufiges Problem. Lassen Sie uns als Nächstes die möglichen Ursachen und Lösungen für dieses Problem besprechen.
Vue.js kann nur Eigenschaften erkennen, die vorhanden sind, wenn die Daten initialisiert werden. Wenn daher einige nicht reagierende Datentypen vorhanden sind, z. B. Map, Set, Symbol und andere Objekttypen, die als Requisiten dieser Komponente oder übergeordneten Komponente übergeben werden, gibt es für diese Datentypen keine Möglichkeit, reaktionsfähige Aktualisierungen auszulösen. In diesem Fall muss das Update manuell angestoßen werden. Verwenden Sie die Methode Vue.set oder Vm.$set, um manuell eine neue Antworteigenschaft festzulegen, zum Beispiel:
Vue.set(this.obj, 'propertyName', newValue)
oder
this.$set(this.obj, 'propertyName', newValue)
this.data.push(newElement); // 这种方式添加的元素不会响应式更新 或者 this.data[this.data.length] = newElement; // 该方式同样不会响应式更新
this.$set(this.data, this.data.length, newElement); 或者 Vue.set(this.data, this.data.length, newElement);
Dasselbe gilt auch für das Hinzufügen neuer Eigenschaften zu Objekten.
Das Objekt oder Array verwendet die Methode Object.freeze()let obj = Object.freeze( { key: 'value' }); let newValue = 'new value'; obj.key = newValue; // 这种方式添加的属性不会响应式更新 let newObj = {[...obj]} // 这样也不会响应式更新 let unfrozenObj = {...obj}; // 解冻后再添加属性才会触发更新 unfrozenObj.key = newValue;
#🎜 🎜##🎜🎜 #Wenn Eigenschaften häufig für dasselbe Objekt gewechselt werden, reagiert Vue.js möglicherweise nicht. Wenn Sie beispielsweise ein Attribut vom Typ Bool ändern, sollten Sie den Wert des Attributs zunächst manuell auf false und dann auf true setzen, z. B.:
this.boolAttr = false; this.boolAttr = true;
data: { deepChild: { deepChild1: { ... } } }, computed: { deepChildProp: function() { return this.deepChild.deepChild1....; } },
Das obige ist der detaillierte Inhalt vonVue-Reaktionsdaten reagieren nicht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!