如何更新状态数组?

时间:2017-05-25 19:31:40

标签: reactjs

我有一个state组件,如下所示:

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

我无法更新state,我需要做类似的事情:

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

1 个答案:

答案 0 :(得分:6)

首先创建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});
}