Как я могу заставить DateRangePicker отображать календари по клику?

Когда я отображаю это в webpack-dev-server, календарь не отображается при клике.

Если я пытаюсь изменить дату вручную, я получаю сообщение об ошибке:

DateSelection.js?f52c:25 Uncaught TypeError: Cannot read property 'calendarFocus' of null

SingleDatePicker, кажется, работает просто отлично, но не DateRangePicker. Что я могу сделать, чтобы правильно отобразить календарь при клике?

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import moment from 'moment';
import { DateRangePicker } from 'react-dates';
import 'react-dates/initialize';
import 'react-dates/lib/css/_datepicker.css';

class DateSelection extends Component {
  constructor(props) {
    super(props);
    this.state = {
      startDate: moment(),
      endDate: moment(),
      calendarFocus: 'startDate',
    }
    this.onDatesChange = this.onDatesChange.bind(this);
    this.onFocusChange = this.onFocusChange.bind(this);
    this.onSubmit = this.onSubmit.bind(this);
  };

  onDatesChange({ startDate, endDate }) {
    this.setState(() => ({ startDate, endDate }));
  };

  onFocusChange({ calendarFocus }) {
    this.setState(() => ({ calendarFocus }));
  };

  onSubmit(e) {
    e.preventDefault();
    console.log(this.state);
  };

  render() {
    return (
      <form onSubmit={this.onSubmit}>
        <DateRangePicker
          startDate={this.state.startDate}
          startDateId="startDate"
          endDate={this.state.endDate}
          endDateId="endDate"
          onDatesChange={this.onDatesChange}
          focusedInput={this.state.calendarFocus}
          onFocusChange={this.onFocusChange}
        />
        <br/>
        <input type="submit" value="Submit" />
      </form>
    );
  }
};

ReactDOM.render((
  <DateSelection/>
), document.getElementById('root'));

Другие детали:

  • реагировать 16.2.0
  • даты реакции 16.3.5
  • вебпак 3.10.0
  • webpack-dev-server 2.11.1

Кроме того, я не могу найти текущие документы по датам реагирования. Множество мест связывают меня с этим сборником рассказов, но кажется, что некоторая информация отсутствует. Например, столбец "Описание" здесь пуст.

1 ответ

Решение

Попробуйте установить calendarFocus в null в конструкторе.

И изменить

onFocusChange({ calendarFocus }) {
  this.setState(() => ({ calendarFocus }));
};

в

onFocusChange(calendarFocus) {
  this.setState(() => ({ calendarFocus }));
};
Другие вопросы по тегам