lifeParser
是调用来处理和更新 boardData 的方法。问题是 boardData 在循环仍在处理时得到更新。
lifeParser(){
var parseArray = this.state.boardData.slice(0);
for(var i=0;i<30;i++){
for(var j=0;j<30;j++){
parseArray[i][j] = 5; // boardData gets updated here before setState is even called
}
}
this.setState({boardData : parseArray});
}
最佳答案
这是因为您的 boardData
是多维的,您不能仅使用 slice
方法克隆它。像这样将它与 map
一起使用。
var parseArray = this.state.boardData.map(function(arr) {
return arr.slice();
});
或使用箭头语法
var parseArray = this.state.boardData.map(a => a.slice());
关于javascript - 状态在调用 setState 之前得到更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43509207/