我有一个 2 个月的日历,我希望用户能够从 8 周的范围内选择一个日期,但只能从当前日期后的 3 周开始。例如,如果当前日期是 2019 年 12 月 23 日星期一,则用户可以选择的第一个开放日期是 1 月 13 日到 3 月 2 日(8 周)。因此应禁用 12 月 24 日至 1 月 12 日的日期,开放范围应为 1 月 13 日至 3 月 2 日。
我在想这样的事情,但没有奏效:
handleDayClick(day, modifiers = {}) {
const oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
const diffDays = Math.round(Math.abs((day - this.state.from) / oneDay));
const range = DateUtils.addDayToRange(day, undefined);
if (diffDays <= 21 , modifiers.disabled) {
const range = DateUtils.addDayToRange(day, this.state);
this.setState(range);
}
else {
this.setState( { selectedDay: modifiers.selected ? undefined : day});
}
DayPicker 看起来像这样:(目前仅启用星期一)
<DayPicker
onDayClick={this.state.date}
numberOfMonths={2}
selectedDays={this.state.selectedDay}
onDayClick={this.handleDayClick}
formatMonthTitle
disabledDays={[
{ daysOfWeek: [0, 2, 3, 4, 5, 6] }, { before: new Date() }]}
month={this.state.month}
onInteraction={this.handleDaySelect}
onMonthChange={this.handleMonthChange}
modifiers={
{
monday: { daysOfWeek: [1] }
}
}
value={this.date}
onChange={(d) => { this.onChange(d) }}
/>