0

在第一次选择日期后,所选日期不会显示在控制台上并延迟,仅在下一次选择时设置为状态。

这是我的代码的链接。 转到示例代码

我错过了什么吗?我希望它在第一次选择时显示在控制台上。

4

1 回答 1

2

setState异步的。

如果您打电话setState并立即使用this.state,它可能还没有更新。

如果您想设置状态并立即对该更改采取行动,您可以传入一个回调函数。

因此,在您的情况下,他的代码将起作用:

handleFromChange(from) {
    this.setState({ from }, () => console.log(this.state));
}

文件:

setState()不会立即改变 this.state 而是创建一个挂起的状态转换。调用此方法后访问this.state可能会返回现有值。无法保证调用的同步操作,setState并且调用可能会被批处理以提高性能。

于 2017-12-07T14:15:52.557 回答