Was ist der Unterschied zwischen vm. $ Set und Vue.set?

ch habe die Vue-Dokumente sorgfältig gelesen und wieder gelese "Reaktivität im Detail" und die API für vm. $ set und Vue.set aber es fällt mir immer noch schwer festzustellen, wann ich welche verwenden soll. Für mich ist es wichtig, zwischen beiden unterscheiden zu können, da wir in meinem aktuellen Laravel-Projekt viele Eigenschaften für Objekte dynamisch festlegen.

Die Unterscheidung in den Dokumenten scheint zwischen der Sprache zu bestehen, in der vm. $ Set "Für Vue-Instanz" ist, während Vue.set "Für einfache Datenobjekte" ist und Vue.set global ist:

Es gibt jedoch Möglichkeiten, eine Eigenschaft hinzuzufügen und sie nach dem Erstellen einer Instanz reaktiv zu machen.

Für Vue-Instanzen können Sie die Instanzmethode $ set (Pfad, Wert) verwenden:

vm.$set('b', 2)
// `vm.b` and `data.b` are now reactive

Für einfache Datenobjekte können Sie die globale Methode Vue.set (Objekt, Schlüssel, Wert) verwenden:

Vue.set(data, 'c', 3)
// `vm.c` and `data.c` are now reactive

Zum Schluss habe ich mich gefragt, ob die dritte "Option" zum Ausführen des oben genannten Vorgangs (dh zum Hinzufügen mehrerer Eigenschaften gleichzeitig) als gleichwertiger Ersatz für eine der beiden oben genannten Optionen verwendet werden kann (indem nur eine Eigenschaft anstelle mehrerer hinzugefügt wird) )?

Möglicherweise möchten Sie einem vorhandenen Objekt eine Reihe von Eigenschaften zuweisen, z. B. mit Object.assign () oder _.extend (). Neue Eigenschaften, die dem Objekt hinzugefügt werden, lösen jedoch keine Änderungen aus. Erstellen Sie in solchen Fällen ein neues Objekt mit Eigenschaften sowohl vom Originalobjekt als auch vom Mixin-Objekt:

// instead of `Object.assign(this.someObject, { a: 1, b: 2 })`
this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 })

Antworten auf die Frage(2)

Ihre Antwort auf die Frage