In der Geschäftsentwicklung stoßen wir häufig auf die folgenden Situationen: Basierend auf den vom Backend zurückgegebenen Schnittstellendaten speichert das Frontend diese im Objektobjekt. Während des Frontend-Entwicklungsprozesses ist es aus praktischen Gründen erforderlich, dem Objekt entsprechende Attribute hinzuzufügen. Diese Attribute sind für das Backend jedoch bedeutungslos und wir hoffen, sie beim Speichern und Senden löschen zu können. Echter Geschäftscode: Das entsprechende async saveData (Typ, Daten) { // Zusätzliche Felder beim Senden von delete data.isCommonValue löschen data.isRemoteValue löschen warte darauf.$request({ ...API.EDIT_SERVICE, Methode: Typ === 'Hinzufügen' ? 'Posten' : 'Setzen', Daten }) } Das Obige ist eine übliche Schreibweise, in manchen Fällen ist sie jedoch nicht die beste und kann Nebenwirkungen mit sich bringen. Folgendes sei beispielhaft erläutert: BeispielUm die obige Situation besser zu demonstrieren, schreiben wir das Beispiel neu (nur zum Zweck der Veranschaulichung der Implementierung). lass Person = { ID: '001', Name: 'ligang', E-Mail: „[email protected]“ } Bitte: Beim Absenden an das Backend muss das E-Mail-Feld gelöscht werden. Methode 1: LöschenEntspricht der oben angegebenen Methode zur Geschäftscode-Verarbeitung person.email löschen console.log(Person) // {ID: '001', Name: 'ligang'} Dabei werden auch die entsprechenden Attribute in den Originaldaten gelöscht. Reflect.deleteProperty(Person, 'E-Mail') Methode 2: DekonstruktionBilden Sie neue Objekte und vermeiden Sie Nebenwirkungen, bei denen auf das Originalobjekt verwiesen wird. let {id, name} = Person let neuePerson = {id, name} console.log(neuePerson) // {id: '001', name: 'ligang'} Der Bezug zu den Originaldaten wird dadurch unterbrochen. Diese Methode ist einfach und leicht zu verstehen, wenn nur wenige Attribute beibehalten werden. Sie wird komplizierter, wenn zu viele Attribute beibehalten werden. let {email, ...neuePerson} = Person console.log(neuePerson) // {id: '001', name: 'ligang'} Der Bezug zu den Originaldaten wird dadurch unterbrochen. Diese Methode ist einfach und leicht zu verstehen, wenn eine große Anzahl von Attributen beibehalten werden soll. Sie ist jedoch komplizierter, wenn zu wenige Attribute beibehalten werden sollen. AuffüllenVue erlaubt nicht das dynamische Hinzufügen reaktionsfähiger Eigenschaften auf Stammebene zu einer bereits erstellten Instanz. Die folgenden Methoden sind ungültig! dies.$set(dies, 'E-Mail', '') dies.$set(diese.$data, 'E-Mail', '') Zusammenfassen Im tatsächlichen Gebrauch wird dringend empfohlen, Methode 2 zu verwenden, um die Originaldaten nicht zu beeinträchtigen. Insbesondere im MVVM-Framework reagieren die Originaldaten häufig. Daten () { zurückkehren { Person: Name: 'ligang', E-Mail: „[email protected]“ } } }, Methoden: { löscheProp () { diese.Person.E-Mail löschen // dies.$löschen(diese.Person, 'E-Mail') }, addProp () { diese.Person.E-Mail = "xxx" dies.$set(diese.Person, 'Adresse', 'xxx') } } 1. Führen Sie den 2. Führen Sie den 1. 2. Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können! Das könnte Sie auch interessieren:
|
<<: Reines CSS3 zum Erstellen eines Beispielcodes für Haushühner
>>: Drei Methoden zum automatischen Vervollständigen von Befehlen in der MySQL-Datenbank
Es ist eine sehr häufige Anforderung, die horizon...
Syntax: ROW_NUMBER() OVER(PARTITION BY COLUMN ORD...
1. Öffnen Sie die virtuelle CentOS 7-Maschine. 2....
mysql.lap Allgemeine Parameterbeschreibung –auto-...
Mit dem Befehl „mysql explain“ wird gezeigt, wie ...
Einführung in Docker Docker ist eine Open-Source-...
Standardmäßig ist der Tabellentitel horizontal ze...
Vorwort Wenn Sie RabbitMQ verwenden und für einen...
Vor Kurzem wurde ein System bereitgestellt, das n...
Dieser Artikel beschreibt, wie xdebug in einer Ub...
Inhaltsverzeichnis 1. Implementieren Sie die Komp...
Standardmäßig unterstützt Nginx nur ein SSL-Zerti...
<button>-Tag <br />Definition und Verw...
Methode 1: Verwenden des Onclick-Ereignisses <...
Inhaltsverzeichnis Probleme, die Redux Toolkit lö...