реакция-выбора даты, проблема с месяцами, показанная по умолчанию - PullRequest
3 голосов
/ 05 апреля 2019

Мы используем response-datepicker для нашей реализации календаря. показанные по умолчанию месяцы контролируются monthsShown datepicker свойство компонента. когда мы говорим 2 - это показывает текущий месяц + следующий месяц.

Я использую повторный DatePicker, как показано ниже

<DatePicker 
  customInput={<CustomInput disableDateSelection={this.props.dateProps.disableDateSelection} />}
  className="w-dtsr-date-picker"
  selected={this.state.startDate}  //called when the date is clicked 
  onChange={this.handleChange}    //called only when the value is chnaged 
  monthsShown={2}     //number of months to be shown 
  minDate={this.props.dateProps.minDate}  //min days to be shown in the calendar 
  maxDate={this.props.dateProps.maxDate}  //max days to be shown in the calendar 
  onChangeRaw={this.handleDateChangeRaw}  //preventing the user from manually entering the dates or text in the input text box 
  dayClassName={date => date.getTime() === new Date(this.props.dateProps.defaultDate).getTime() && this.props.dateProps.disableDefaultDate ? 'random' : undefined}
  //dayClassName - to disable the proposed forecast dates or actual dates if user has already selected/proposed the same forecast/actual dates
  disabled={this.props.dateProps.disableDateSelection}
/>

Есть ли способ показать предыдущий месяц и этот месяц? Например, если текущий месяц - апрель, мы хотели бы показать март и апрель, а не апрель - май.

1 Ответ

2 голосов
/ 05 апреля 2019

К сожалению, при просмотре исходного кода компонента в репозитории react-datepicker может показаться, что он всегда будет показывать текущий месяц и некоторое количество месяцев после этого, контролируемое свойством monthsShown. Не думайте, что есть способ заставить его делать то, что вы хотите, кроме разветвления репозитория github и добавления функций самостоятельно (или отправки запроса на добавление функций). Проблема проблема в вопросе:

calendar.jsx

var monthList = [];
for (var i = 0; i < this.props.monthsShown; ++i) {
  var monthsToAdd = i - this.props.monthSelectedIn;
  var monthDate = addMonths(this.state.date, monthsToAdd);
  var monthKey = `month-${i}`;

Свойство monthsShown контролирует, какие месяцы будут отображаться, и по умолчанию оно равно 1. Чтобы заставить его делать то, что вы хотите, можно добавить флаг, чтобы отменить добавление месяцев и вместо этого вычесть его.

...