【问题标题】:updating a array in react state not working更新处于反应状态的数组不起作用
【发布时间】:2020-11-23 05:36:12
【问题描述】:

我想在 React 应用中实现一个简单的撤消/重做功能。为此,我正在尝试跟踪状态。

反应状态:

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

但是当我尝试更新 undo[] 时,它总是在第一个触发器中打印一个空数组,从第二次开始添加项目。试图找出为什么它没有在第一时间更新 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

【问题讨论】:

    标签: reactjs state react-state


    【解决方案1】:

    你会在setState的回调中得到你更新的状态,即如下:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-29
      • 2021-10-22
      • 2016-01-19
      • 2018-12-22
      • 2021-12-30
      • 2021-10-23
      • 2018-06-16
      • 1970-01-01
      相关资源
      最近更新 更多