首先,必须说这可能是一个setState
问题,因为我遇到了一些问题,但我无法理解为什么这个while循环不起作用。
代码:
dealerTwisted = () => {
console.log(this.state.dealersOverallTotal, 'total on entry');
let looping = true;
while(looping){
console.log(this.state.dealersOverallTotal,'same');
if(this.state.dealersOverallTotal < 17){
this.deal2Dealer();
let dealersDeck = this.state.dealersDeck;
let newDealersDeckTotal = [];
for (var i=0; i < dealersDeck.length; i++){
newDealersDeckTotal.push(dealersDeck[i].rankValue)
}
let total = newDealersDeckTotal.reduce(function(a, b) {
return a + b;
},
0);
console.log(total, 'tot');
this.setState({ dealersOverallTotal: total });
}
else{
console.log(this.state.dealersOverallTotal, 'logging as greater than 17');
if(this.state.playersOverallTotal > this.state.dealersOverallTotal){
console.log('player wins!');
looping = false;
}
else if (this.state.playersOverallTotal > this.state.dealersOverallTotal){
console.log('its a tie!');
looping = false;
}
else {
console.log('dealer wins!');
looping = false;
}
}
}
};
我认为它的方式以及我希望它的工作方式如下:
调用该函数,输入循环,如果this.state.dealersOverallTotal
小于17,则输入if块,然后总计更新,然后再次开始循环。你继续输入if块,直到你得到一个高于17的数字。一旦你进入了else块,然后你在那里遇到的任何条件,你就会爆发。
有趣的是我刚刚调试并发现这一行(第一个控制台日志)console.log(this.state.dealersOverallTotal, 'total on entry');
每次都给我相同的数字,即内部没有更新。谁能明白为什么?
答案 0 :(得分:0)
React的 IEnumerable<RepoItemInfo> myQuery = from things in repo.FO.FLOW2FO.Container2.SelfInfo.Children
where String.Equals(things.Name, repoItemName)
select things;
是异步的,因此setState
永远不会达到17。