2017-10-17 17 views
2

setStateを使用して状態を変更しようとしていて、新しい状態でアクションを呼び出そうとしていますが、新しい状態が設定される前にReactがアクションを送出します。私は新しい状態を待ってからアクションをディスパッチする方法を教えてください。アクションが送出された直後のアプリケーション状態の変化

addressInput = e => { 
    this.setState({ 
    address: e.target.value 
    }); 
    this.props.filterSearch(this.state.address) //this will be called before state is set        
} 

答えて

3

this.setState状態変化が発生した後に呼ばれる第二のパラメータとしてコールバックを提供します。

SETSTATE(常にすぐにコンポーネントを更新しません):docsから

addressInput = e => { 
    this.setState({ 
    address: e.target.value 
    }, 
    this.props.filterSearch(this.state.address)); 
} 

を次のようにコールバックを使用する必要があります。後で更新されるまで、バッチ処理または遅延処理が行われることがあります。これはsetState()を潜在的な落とし穴の後で直ちに読み込みます。そのかわりに、componentDidUpdateまたはsetStateコールバック(setState(updater、callback))を使用してください。いずれかが、更新が適用された後に起動することが保証されています。

関連する問題