更新处于反应状态的数组不起作用
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));
我想在 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));