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());