我們使用的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~~~~~~~~