Vue.js aktualisiert weiterhin Requisiten, obwohl i eine Methodenvariable ist
P粉432930081
P粉432930081 2023-09-15 23:36:37
0
1
542

Ich habe die folgende Methode, um zwei Arrays zu vergleichen, eines aus Requisiten und eines aus meiner Komponente. Ich füge jedes Element, das im Requisiten-Array, aber nicht in meinem Komponenten-Array vorhanden ist, in ein drittes Array ein und füge eine Eigenschaft namens „destroy: true“ hinzu, damit ich es an das Backend senden und aus der Datenbank löschen kann.

Aus irgendeinem Grund werden jedoch meine Requisiten aktualisiert und nicht die Variablen, die ich in der Methode verwende. Ich bin mir nicht ganz sicher, warum das passiert, da ich nicht direkt auf die Requisite verweise, aber ich kopiere ihren Inhalt in eine Variable innerhalb der Methode.

updateArray(){ let updatedArray = [] let oldArray = [...this.props.array] oldArray.forEach(element => { if(this.componentArray.indexOf(element) > -1){ updatedArray.push(element) }else{ let newElement = element newElement.destroy = true updatedArray.push(newElement) } }) return updatedArray },

Warum passiert das? Die anderen Elemente in meiner Komponente funktionieren einwandfrei, nur bei diesem gibt es Probleme.

P粉432930081
P粉432930081

Antworte allen (1)
P粉465675962

是的,你正在将this.props.array数组的元素复制到一个新的方法本地数组中,但是由于数组的元素是对象,最终两个数组都包含相同的对象(对象的引用

你可以使用扩展运算符let newElement = { ...element }创建原始元素的浅拷贝- 这将创建一个全新的对象,并复制原始对象的所有属性。但要注意,如果原始对象的任何属性包含数组/对象,你将面临相同的问题...只是深度更深一层

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!