Diese Frage könnte ein wenig auf der Seite einer "Best Practice" Frage fallen, aber bitte ertragen Sie mit mir. HierErsetze Objekt in Array auf reagieren Zustand
ist ein Teil meines Staates:
this.state = {
typeElements: {
headers: [
{
name: "h1",
size: 70,
lineHeight: 1.25,
kearning: 0,
marginAfter: 0
}, {
name: "h2",
size: 70,
lineHeight: 1.25,
kearning: 0,
marginAfter: 0
}, {
name: "h3",
size: 70,
lineHeight: 1.25,
kearning: 0,
marginAfter: 0
}...
Was muss ich tun, ist REPLACE das Objekt zu einem bestimmten Index auf der Header-Array.
Ich weiß nicht, wie das mit der Methode setState wie in this.setState(headers[1] = {obj})
zu tun - aber das ist offensichtlich ungültig. Meine aktuelle Methode wird ein neues Array erstellen und die alten wie dieser clobbering:
_updateStyle(props) {
let newState = Object.assign({}, this.state)
newState.typeElements.headers[props.index] = props
this.setState(newState)
};
Für mein kleines Hacky Projekt ich denke, es ist in Ordnung, aber ich fühle mich wie diese super heavy handed ist und schnell auf jedem zu Performance-Problemen führen würde Art der Skala.
aha, ich war mir dessen bewusst, aber war mir nicht sicher, es zu implementieren, also geht es in der setState-Methode? Was macht die "1"? Ist das der Einfügepunkt des neuen Objekts? Könnte ich nicht nochmal props.index dafür verwenden? – motleydev
Schauen Sie sich die array.splice() Methode https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Global_Objects/Array/splice an und Sie werden verstehen ... das Array enthält die an die Spleißmethode, also ist die "1" in diesem Beispiel deleteCount. –