我想知道如何防止用户选择今天的日期以上的日期。例如,今天是3.7,那么我们可以选择用户可以选择的最高结束日期。
<DateRangePicker
startDate={this.state.startDate}
startDateId="startDate"
endDate={this.state.endDate}
endDateId="endDate"
onDatesChange={({ startDate, endDate }) => {
this.setState({ startDate, endDate }, () => {});
}}
focusedInput={this.state.focusedInput} // PropTypes.oneOf([START_DATE, END_DATE]) or null,
onFocusChange={focusedInput => this.setState({ focusedInput })} // PropTypes.func.isRequired,
daySize={50}
noBorder={true}
isOutsideRange={() => false}
/>
答案 0 :(得分:1)
您应该使用isOutsideRange
道具和Moment.js处理可用的日期范围。例如,您可以通过这种方式只允许选择过去30天内的日期:
import React, { Component } from "react";
import moment from "moment";
import "react-dates/initialize";
import "react-dates/lib/css/_datepicker.css";
import { DateRangePicker } from "react-dates";
import { START_DATE, END_DATE } from "react-dates/constants";
export default class Dates extends Component {
state = {
startDate: null,
endDate: null,
focusedInput: null
};
onDatesChange = ({ startDate, endDate }) =>
this.setState({ startDate, endDate });
onFocusChange = focusedInput => this.setState({ focusedInput });
isOutsideRange = day =>
day.isAfter(moment()) || day.isBefore(moment().subtract(30, "days"));
render() {
const { startDate, endDate, focusedInput } = this.state;
return (
<DateRangePicker
startDate={startDate}
startDateId={START_DATE}
endDate={endDate}
endDateId={END_DATE}
onDatesChange={this.onDatesChange}
focusedInput={focusedInput}
onFocusChange={this.onFocusChange}
daySize={50}
noBorder={true}
isOutsideRange={this.isOutsideRange}
/>
);
}
}
答案 1 :(得分:0)
我在另一个反应日期选择器程序包中遇到了类似的问题。 在阅读了您的文档(AirBnb的文档)后,我发现他们的GitHub上提到了这个问题: Set date range #86
似乎有一个名为isOutsideRange
的道具带有一个功能。例如,您可以返回false
来表示当前日期以外的任何日期,只需进行比较即可。
希望有帮助
答案 2 :(得分:0)
我不知道您是否找到了解决方案。但是我还是给出了解决方案。
您可以从反应日期使用导入this.state.products
并使用{ isInclusivelyBeforeDay }
希望有帮助
答案 3 :(得分:0)
功能
isOutsideRange(day) {
return (moment().diff(day) < 0);
}
...
<DateRangePicker
isOutsideRange={this.isOutsideRange}
>