2017-02-10 6 views
0

私は日付範囲に基づいてデータを表示するフォームを持っています。初めてのロードでは、>過去1時間のデータが表示されます。私は、開始日と終了日をレンダリングするために、反応日>>>ピッカーを使用しています。ユーザーが開始日と終了日を変更すると、以下の関数が呼び出されます。この機能では、私は、ユーザーが選択した開始日と終了日で>>>状態を設定しようとしていますが、状態は常に>>>以前の開始日と終了日の値React - this.setStateとthis.forceUpdateは、最新の値を保持するために状態を更新しません。

refreshTableOnDateChange(startDateSelected,endDateSelected) { 
      this.setState({startDate: null, endDate: null}); 
      console.log("inside refreshTableOnDateChange this.state.startDate is", startDateSelected); 
      console.log("inside refreshTableOnDateChange this.state.endDate is", endDateSelected); 
      let startDateFormatted = startDateSelected.format('YYYY-MM-DD HH:mm'); 
      let endDateFormatted = endDateSelected.format('YYYY-MM-DD HH:mm'); 
       this.setState({startDate: startDateFormatted, endDate: endDateFormatted}); 
       this.forceUpdate(); 
       console.log("start date is", this.state.startDate); 
      console.log("end date is", this.state.endDate); 
      this.load(this.state.orderType); 
      } 

答えて

0

SETSTATEはすぐに変異していない状態を保持します - 反応のドキュメントから:

https://facebook.github.io/react/docs/react-component.html#setstate

SETSTATE()すぐにthis.state変異させるが、 保留の状態遷移を作成しません。この メソッドを呼び出した後this.stateにアクセスすると、潜在的に既存の値が返される可能性があります。 setStateへの呼び出しの同期操作を保証する はなく、パフォーマンス向上のために を呼び出してもよいでしょう。

このコードを使用すると、更新を確認するために、レンダリングでなければなりません。:

 console.log("start date is", this.state.startDate); 
関連する問題