2017-05-25 59 views
1

我有這樣的組件的state如何更新狀態數組?

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

,我有麻煩更新state,我需要做這樣的事情:

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

回答

4

首先創建的state array副本然後更新該值,然後使用setState來更新狀態值。

通過使用spread operator

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

或者你可以用Array.prototype.slice()也同樣會返回一個新的array,就像這樣:

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

不可改變的版本與雙[片段](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)]' –