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)]