看看这个简单的功能:
handleEventClick(i){
this.setState({choosenDriver: this.state.drivers[i]});
alert(i);
for (let ix in this.state.choosenDriver.cars) {
alert(ix);
}
}
我期望发生的是,当我点击时,alert(i)
和alert(ix)
都会被触发。
出于某种原因,alert(ix)
在第一次点击时不会触发,但在第二次点击时应该正常工作。 alert(i)
但是可以正常工作。
有人可以解释一下吗? 谢谢!
更新
比你们两个都回答。我确定你已经解释了这个问题,但我仍然不明白。
现在我试试这个:
handleEventClick(i){
this.setState({choosenDriver: this.state.drivers[i]});
let a = this.state.choosenDriver.cars;
Array.prototype.forEach.call(a, function(child) {
// Do something with `child`
alert(child);
});
首次点击时会产生以下错误:
Uncaught TypeError: Array.prototype.forEach called on null or undefined
但我在第一行定义了choosenDriver BEFORE循环通过它,所以我不明白为什么会出现这个错误。