尝试在值相互依赖的状态下更新对象的值

Trying to update the values of an object in a state where the values are dependent on each other

我试图在将它们传递到 API 之前更新处于我状态的对象的值,但是值的计算是相互依赖的。例如如果 endTime 需要当前时间而 startTime 需要 10 分钟之前的时间,则单击按钮时 endTime 应该更新为 startTime 并且 startTime 应该需要 10 分钟之前的时间。我面临的问题是我设置了结束时间,当我试图设置开始时间时,我的结束时间被重置为开始时间。有什么方法可以保留 ObjValue1 的值吗?

比如我的endTime是12:00pm,startTime是11:50pm那么onClick,我的startTime应该是11:40pm,endTime应该是11:50pm

onClick(){
            let time = {...this.state.timeData};
            let option;
            option = this.state.dropdownOption;
            if(option === '10 minutes'){
            time['endTime'] =timeData['startTime'];
            console.log('endTime', timeData['endTime'])

            time['startTime'] = timeData['endTime'].subtract(10, 'm');
            console.log('startTime', time['startTime'])

            this.setState({timeData: time}, this.callAPI())
          }

好的,你可以做的是在设置你的对象之前将你的时间字符串化,看看下面:

onClick() {
  const time = {
    ...this.state.timeData
  };
  const option = this.state.dropdownOption;
  if (option === '10 minutes') {
    
    // Let's get string versions of the times you need
    const newStartTime = JSON.stringify(time['endTime'].subtract(10, 'm'));
    const newEndTime = JSON.stringify(time['startTime']);
    
    // Set the new values in your time object
    time.startTime = newStartTime;
    time.endTime = newEndTime;

    // Now you can set the state
    this.setState({
        timeData: time
    }, this.callAPI())
  }
}

向两者添加减法并删除赋值运算符帮助了我。

if(option === '10 minutes'){
                    timeData['startTime'].subtract(10, 'm');
                    timeData['endTime'].subtract(10, 'm');
                    this.setState({timeData: time}, this.callAPI())
                }