Reactjs 如何更新状态数组?

Reactjs 如何更新状态数组?,reactjs,Reactjs,我有一个组件的状态,如下所示: constructor(props){ super(props) this.state={ editableComparatorIndexes: [] } } onEditComparatorClicked(i) { this.setState({editableComparatorIndexes[i]:1}); this.setState(this.state); } onEditComparatorClic

我有一个组件的
状态
,如下所示:

constructor(props){
   super(props)
   this.state={
      editableComparatorIndexes: []
   }
}
onEditComparatorClicked(i) {
     this.setState({editableComparatorIndexes[i]:1});
     this.setState(this.state);
}
onEditComparatorClicked(i) {
   let editableComparatorIndexes = this.state.editableComparatorIndexes.slice();
   editableComparatorIndexes[i] = 1;
   this.setState({editableComparatorIndexes});
}
我在更新
状态时遇到问题,我需要执行以下操作:

constructor(props){
   super(props)
   this.state={
      editableComparatorIndexes: []
   }
}
onEditComparatorClicked(i) {
     this.setState({editableComparatorIndexes[i]:1});
     this.setState(this.state);
}
onEditComparatorClicked(i) {
   let editableComparatorIndexes = this.state.editableComparatorIndexes.slice();
   editableComparatorIndexes[i] = 1;
   this.setState({editableComparatorIndexes});
}

首先创建状态数组的副本,然后更新值,然后使用
setState
更新状态值

通过使用:

或者您也可以使用,它还将返回一个新的
数组
,如下所示:

constructor(props){
   super(props)
   this.state={
      editableComparatorIndexes: []
   }
}
onEditComparatorClicked(i) {
     this.setState({editableComparatorIndexes[i]:1});
     this.setState(this.state);
}
onEditComparatorClicked(i) {
   let editableComparatorIndexes = this.state.editableComparatorIndexes.slice();
   editableComparatorIndexes[i] = 1;
   this.setState({editableComparatorIndexes});
}

首先创建状态数组的副本,然后更新值,然后使用
setState
更新状态值

通过使用:

或者您也可以使用,它还将返回一个新的
数组
,如下所示:

constructor(props){
   super(props)
   this.state={
      editableComparatorIndexes: []
   }
}
onEditComparatorClicked(i) {
     this.setState({editableComparatorIndexes[i]:1});
     this.setState(this.state);
}
onEditComparatorClicked(i) {
   let editableComparatorIndexes = this.state.editableComparatorIndexes.slice();
   editableComparatorIndexes[i] = 1;
   this.setState({editableComparatorIndexes});
}

双精度不可变版本:
[…this.state.editableComparatorIndexes.slice(0,i),changedElement,…this.state.editableComparatorIndexes.slice(i+1)]
双精度不可变版本:
[…this.state.editableComparatorIndexes.slice(0,i),changedElement,…this.state.editableComparatorIndexes.slice(i+1)]