setState在for循环中设置相同的对象

时间:2018-06-21 20:09:59

标签: javascript arrays reactjs

我具有此功能来检查对象可以移动的位置。步数只能是2:

whereToMove(x, y){
for (var i = 0; i < this.state.gameArea.length; i++) {
  var cor = this.state.gameArea[i];
  var index = this.state.hasCoin.findIndex(item => item.x === cor.x && item.y === cor.y);
  if (index === -1) {
      if (((x+1) === cor.x && (y+1) === cor.y) || ((x+1) === cor.x && (y-1) === cor.y) || ((x-1) === cor.x && (y-1) === cor.y) || ((x-1) === cor.x && (y+1) === cor.y)) {
        console.log(cor.x +', '+cor.y);
        that.setState({ showCanMove: [...that.state.showCanMove, {x: cor.x, y: cor.y}]}, function(){
          console.log(that.state.showCanMove);
        });
      }
    }
  }
}

但是数组'this.state.showCanMove'只有一个对象,而不是两个 即使第一个显示两次可能移动的x和y的console.log使用两个不同的x和y两次显示。 为什么会这样?

0 个答案:

没有答案