0

私のアプリでhttps://github.com/skratchdot/react-bootstrap-daterangepickerを使用しています。カスタム範囲を選択すると、入力が適用された後に入力が更新されます。あらかじめ定義された範囲を選択すると、ウィジェットは適用ボタンを押して閉じます。また、あらかじめ定義された範囲は入力に書き込まれません。Daterangepicker入力が更新されていません

class DateTimePicker extends React.Component { 
 
    constructor(props) { 
 
    super(props); 
 

 
    this.DATE_FORMAT = 'YYYY-MM-DD HH:mm:ss'; 
 

 
    this.ranges = { 
 
\t \t \t 'Today': [moment().startOf('day'), moment().endOf('day')], 
 
\t \t \t 'Yesterday': [moment().startOf('day').subtract(1, 'days'), moment().endOf('day').subtract(1, 'days') ], 
 
\t \t \t 'Last 7 Days': [moment().subtract(6, 'days'), moment()], 
 
\t \t \t 'Last 30 Days': [moment().subtract(29, 'days'), moment()], 
 
\t \t \t 'This Month': [moment().startOf('month'), moment().endOf('month')], 
 
\t \t \t 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')], 
 
    }; 
 

 
    this._handleApply = this._handleApply.bind(this);  
 
    } 
 

 
    _handleApply(event, picker) { 
 
    \t this.props.onChange(
 
    \t \t picker.startDate.format(this.DATE_FORMAT), 
 
    \t \t picker.endDate.format(this.DATE_FORMAT)); 
 
    } 
 

 
    render() { 
 
    \t let startDate = moment(this.props.startDate); 
 
    \t let endDate = moment(this.props.endDate); 
 

 
    let start = startDate.format(this.DATE_FORMAT); 
 
    let end = endDate.format(this.DATE_FORMAT); 
 
    let label = start + ' to ' + end; 
 
    if (start === end) { 
 
     label = start; 
 
    } 
 

 
    let locale = { 
 
     format: 'YYYY-MM-DD HH:mm:ss', 
 
     separator: ' to ', 
 
     applyLabel: 'Apply', 
 
     cancelLabel: 'Cancel', 
 
     weekLabel: 'W', 
 
     customRangeLabel: 'Custom Range', 
 
     daysOfWeek: moment.weekdaysMin(), 
 
     monthNames: moment.monthsShort(), 
 
     firstDay: moment.localeData().firstDayOfWeek(), 
 
    }; 
 

 
    return (
 
    \t <div> 
 
\t  \t Time frame:<br/> 
 
\t \t \t \t <DatetimeRangePicker 
 
\t \t \t \t timePicker 
 
\t \t \t \t timePicker24Hour 
 
\t \t \t \t autoUpdateInput 
 
      alwaysShowCalendars 
 
\t \t \t \t locale={locale} 
 
\t \t \t \t startDate={startDate} 
 
\t \t \t \t endDate={endDate} 
 
\t \t \t \t ranges={this.ranges} 
 
\t \t \t \t onApply={this._handleApply} 
 
\t \t \t \t > 
 
\t \t \t \t <div className='input-group'> 
 
\t \t \t \t  <input type='text' className='form-control' defaultValue={label}/> 
 
\t \t \t \t  <span className='input-group-btn'> 
 
\t \t \t \t   <button className='btn btn-default date-range-toggle'> 
 
\t \t \t \t    <BootstrapGlyphicon glyphicon='calendar'/> 
 
\t \t \t \t   </button> 
 
\t \t \t \t  </span> 
 
\t \t \t \t </div> 
 
\t \t \t \t </DatetimeRangePicker> 
 
\t \t \t </div> 
 
    ); 
 
    } 
 

 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+1

これは、ブートストラップがDOMを更新するときに反応を妨げるjQueryを使用するため、reactjsで使用するのは簡単ではありません。たぶんあなたは[this](https://github.com/pushtell/react-bootstrap-date-picker)を見ることができます。 – trixn

+0

時間と時間の範囲を選択できるピッカーが必要です。あなたのリンクで役に立つ情報を見つけることができません。私は何を探すべきですか? – t7bdh3hdhb

答えて

0

問題は、「値」小道具の「はdefaultValue」小道具を交換することによって解決された:ここ

は反応するクラスのコードです。入力は次のようになります:

<input type='text' className='form-control' value={label} onChange={this._inputChanged}/> 

私はまだ背景を知りません。誰かが詳細な情報を持っているなら、私はまだ興味があります。

関連する問題