Функция
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;
})
}]}
/>