javascript - 状态在调用 setState 之前得到更新

标签 javascript arrays reactjs

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/

相关文章:

javascript - $ionicPopup 随着后台状态的变化而中断

javascript - 通过javascript获取音频文件的音量信息

java - 如何阅读管道分隔线 |来自一个文件并在两个不同的 ArrayList 中拆分整数

javascript - 在 Reactjs 中,如何让一个 prop 函数做单独的任务并根据需要的条件返回它们的值

javascript - 如何使用 React 显示以 JSON 格式接收的 HTML

reactjs - 如何将用户重定向到登录前的位置(auth0 React)

javascript - 我在重新渲染时隐藏的 react 组件上的动画过渡

javascript - 为什么 Twitter Bootstrap 的轮播不适合我?

javascript - Google Chrome Object.defineProperty 中的错误行为?

javascript - 在 native react 中对嵌套级别对象进行排序