Выделите следующие 2 недели в поле выбора даты - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу выделить следующие две недели с текущей даты.Я использую response-datepicker модуль.Я использовал следующий код:

var currentDate = new Date();
var numberOfDaysToAdd = 13;
const daysHighlighted = new Array(numberOfDaysToAdd).fill(currentDate);

return (
    <DatePicker
        selected={this.state.startDate}
        onChange={this.handleChange}
        highlightDates={[{
            "react-datepicker__day--highlighted": daysHighlighted.map((day, index) => {
                day.setDate(day.getDate() + index)
                return new Date(day)
            })
        }]}
    />
)

, что дает мне неожиданный результат.

Я просто хочу выделить следующие две недели, включая текущую дату.

1 Ответ

0 голосов
/ 21 февраля 2019
Функция

fill заполняет массив тем же экземпляром Date.Поэтому, когда вы обновляете дату с помощью setDate, она изменяет значение других дат этого массива.Поскольку все они указывают на один и тот же объект.

Вы можете попробовать что-то вроде этого:

new Array(numberOfDaysToAdd).fill().map((_, i) => {   // fills the array with `undefined`
  const d = new Date();                               // create a new Date instance
  d.setDate(d.getDate() + i);                         // update only that instance
  return d;                                           // return the updated date
})

Теперь вы можете использовать этот массив в качестве значения react-datepicker__day--highlighted key:

<DatePicker
    selected={this.state.startDate}
    onChange={this.handleChange}
    highlightDates={[{
        "react-datepicker__day--highlighted": new Array(numberOfDaysToAdd).fill().map((_, i) => {  
          const d = new Date();
          d.setDate(d.getDate() + i);
          return d;
      })
    }]}
/>
...