Ich bin eine App, wo ich ein Produkt in einen Warenkorb hinzufügen kann. Wenn der Benutzer einen Artikel aus dem Warenkorb entfernt, verwende ich .filter, um das Objekt "basketItem" aus dem Array "basketItems" zu entfernen. Ich setze dannState auf dieses Array mit dem gefilterten Element. jedochArtikel zum Warenkorb hinzufügen Filter vs Splice ReactJS Javascript
removeItem(msg, data) {
let newStateItems = this.state.items.filter((i) => i.id != data.id);
this.setState({
items: newStateItems
});
this.calculateTotals();
}
Das Problem ist, dass wenn ich ein Element entfernt und anschließend ein weiteres Element hinzufügen gehen, um das neue Element, das zeigt, wie das alte Element erstellt wird, bis die Seite aktualisiert wird - ein Beispiel dieser App kann gefunden werden here und die full repository ist auf GitHub.
Der Aufruf Add Artikel sieht wie folgt aus:
addItem(msg, data) {
this.state.items.push(data);
this.setState({
items: this.props.items
})
this.calculateTotals();
}
Wie kann ich sicherstellen, dass die richtige Ware in dem Warenkorb zeigt?
vielleicht brauchen Sie Artikel so etwas wie dieses https://jsfiddle.net/7og8ztLz/ –
Add 'concat' statt' push' in reagieren. 'push' mutiert Werte. Aber React arbeitet mit unveränderlichen Daten (Es funktioniert mit veränderbaren Daten, aber ich empfehle Ihnen nicht, nach Problemen zu suchen) – iofjuupasli