嗨,我想问我如何将对象从反应状态复制到另一个临时状态。我这样尝试过:

    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
  });
}

10-06 15:05