setState方法异步转同步

2017-07-09  本文已影响0人  tcwcq

我们使用的setState方法是异步请求,有的时实际的值会和我们预期不一致。
例如:

  onChange(event) {
    console.log(event)
    this.setState({money: event}
    })
<InputItem
            type="number"
            extra={this.state.extra}
            value={this.state.money}
            onChange={this.onChange.bind(this)}
          > 

在这个代码片段中,我们通过onChange方法想拿到输入框输入的值,但是用console打印这个值的时候我们发现:值总是比我们实际输入的慢一位(我们输入1234 , console出来的是123)
这个现象就是setState的异步处理造成的,为了解决这个问题,我们将onChange方法改为

onChange(event) {
    console.log(event)
    this.setState({money: event}, function () {
      this.stateFunction()
    })

这样我们console出来的值就跟我们实际输入的一致了,通过一个回调函数就能轻松让setState变为同步。
cool~~~~~~~~

上一篇 下一篇

猜你喜欢

热点阅读