Ich verwende React, und Array von Objekten in einem Zustand zu aktualisieren. Die allgemeine Antwort im Internet war auf unter einen ähnlichen Ansatz zu verwenden:React setState auf Array von Objekten rerenders jede Komponente
const newState = this.state.elements.slice().concat({key: 'val'});
this.setState({elements: newState});
Aber das Problem, das ich mit diesem Problem begegnet, ist, dass, wenn diese Daten in eine Funktion machen binded und Komponenten, es neu macht jede Komponente.
Beispiel umfassen (Karte von lodash verwendet Index abgerufen werden, während Abbildung):
render() {
return (
<div>
{map(this.state.elements, (el, index) => <Component key={`el-${index}`} el={el} />)}
</div>
);
}
Auch wenn das Array, um die Zustandsänderungen ändert sich nicht und ändern Sie den Schlüssel des der Komponenten tut, jedes Mal, Es rendert und montiert die Komponente von Grund auf neu.
Gibt es eine mögliche Best-Practice-Lösung für dieses Problem?
Best, Y
Sie können 'Array.prototype.map' jedoch perfekt verwenden. Die Callback-Funktion empfängt '(currentItem, currentIndex, originalArray)'. – cfraser
mit Index als Schlüssel ist ein Antipattern, überprüfen Sie dies: https://medium.com/@robinpokorny/index-as-a-key-is-anantipattern-e0349aece318 –