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

07-28 01:01