更新处于反应状态的数组不起作用

updating a array in react state not working

我想在 React 应用程序中实现一个简单的 undo/redo 功能。为此,我正在尝试跟踪状态。

反应状态:

  state = {
        schedule : [],
        loads:[],
        undo:[],
        redo:[]
    };

但是当我尝试更新 undo[] 时,它总是在第一个触发器中打印一个空数组,从第二次开始在 wards 上添加项目。试图找出为什么它不在第一时间更新 undo[] 数组。

const redoUndoObj ={
             oldStateSchedule : this.state.schedule,
             oldStateLoads : this.state.loads
        }


        this.setState({ undo : this.state.undo.concat(redoUndoObj)});

        console.log(this.state.undo);//print [] at first run

您将在 setState 的回调中获得您的更新状态,即如下:

this.setState({ 
  undo : this.state.undo.concat(redoUndoObj)
}, () => console.log(this.state.undo));