2017-05-25 5 views
1

ich eine state der Komponente wie dieses:Wie aktualisiert man das State-Array?

constructor(props){ 
    super(props) 
    this.state={ 
     editableComparatorIndexes: [] 
    } 
} 

Und Ich habe Probleme, die state Aktualisierung, ich brauche so etwas zu tun:

onEditComparatorClicked(i) { 
    this.setState({editableComparatorIndexes[i]:1}); 
    this.setState(this.state); 
} 

Antwort

4

zuerst eine Kopie von state array erstellen dann Aktualisieren Sie den Wert und verwenden Sie dann setState, um den Statuswert zu aktualisieren.

von spread operator mit:

onEditComparatorClicked(i) { 
    let editableComparatorIndexes = [...this.state.editableComparatorIndexes]; 
    editableComparatorIndexes[i] = 1; 
    this.setState({editableComparatorIndexes}); 
} 

Oder können Sie Array.prototype.slice() verwenden auch wird es auch eine neue array zurückkehren, wie folgt aus:

onEditComparatorClicked(i) { 
    let editableComparatorIndexes = this.state.editableComparatorIndexes.slice(); 
    editableComparatorIndexes[i] = 1; 
    this.setState({editableComparatorIndexes}); 
} 
+0

Immutable Version mit Doppel [Scheibe] (https: // developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice?v=control): '[... this.state.editableComparatorIndexes.slice (0, i), changedElement,. ..this.state.editableComparatorIndexes.slice (i + 1)] ' –

Verwandte Themen