嗨,我想问我如何将对象从反应状态复制到另一个临时状态。我这样尝试过:
startEditing() {
this.setState({editMode: true});
//Save schedule before changes
this.setState({oldSchedule: this.state.schedule});
}
cancelEditing(){
this.setState({editMode:false});
//revert changes in schedule
this.setState({schedule:this.state.oldSchedule});
this.setState({oldSchedule:null});
}
我不明白为什么这行不通,但不知道如何正确执行。请问你能帮帮我吗?
时间表是对象类型
最佳答案
因为您没有复制先前的对象,所以您对其进行了另一个引用;
您应该深度复制该对象;一种方法是使用json.parse();
startEditing() {
this.setState({
editMode: true,
oldSchedule: JSON.parse(JSON.stringify(this.state.schedule))
});
}
cancelEditing(){
this.setState({
editMode:false,
schedule:JSON.parse(JSON.stringify(this.state.oldSchedule)),
oldSchedule:null
});
}