reactjs - 日期选择器 - 禁用今天之前的几天不起作用

标签 reactjs react-day-picker

我想禁用今天之前的日期或过去的日期。以下是我处理它的方法,但它不起作用。我仍然可以选择今天之前的日期..

日期组件:

type Props = {
  onDateChange: Function,
};

type State = {
  calendarOpen: boolean,
  month: moment,
  day: ?moment,
};

export default class AppearDateCalendar extends Component<Props, State> {
  state = {
    calendarOpen: false,
    month: moment(),
    day: undefined,
  };

  componentDidMount() {
    document.addEventListener('mousedown', this.handleClickOutside);
  }

  componentWillUnmount() {
    document.removeEventListener('mousedown', this.handleClickOutside);
  }

  handleClickOutside = (event: SyntheticMouseEvent<EventTarget>) => {
    const currentNode = ReactDOM.findDOMNode(this);
    if (currentNode && !currentNode.contains(event.target)) {
      this.setState({ calendarOpen: false });
    }
  };

  handleCalendarClick = () => {
    this.setState({ calendarOpen: !this.state.calendarOpen });
  };

  handleMonthChange = (_event: any, newMonth: moment) => {
    this.setState({ month: newMonth });
  };

  handleDaySelect = (_event, day: moment) => {
    this.props.onDateChange(day);
    this.setState({ day, calendarOpen: false });
  };

  dateDisplayText = (): string => {
    if (this.state.day) return this.state.day.format('Do MMM, YY');
    return t('choose_date');
  };

  render() {
    const today = new Date();

    return (
      <div className={cx(css.appearDateCalendar, this.state.calendarOpen ? css.focused : '')}>
        <div onClick={this.handleCalendarClick}>
          <h5 className={css.heading}>{t('heading')}</h5>
          <p className={css.dateText}>{this.dateDisplayText()}</p>
        </div>
        {this.state.calendarOpen && (
          <div className={css.calendarDropdown}>
            <DayPicker
              disabledDays={{ before: today }}
              month={this.state.month}
              onInteraction={this.handleDaySelect}
              onMonthChange={this.handleMonthChange}
            />
          </div>
        )}
      </div>
    );
  }
}

所以我正在使用 disabledDays 属性并设置 before:today。这是这样做的方法还是有更好/正确的方法来解决这个问题?欢迎任何帮助/建议!

最佳答案

这是我添加的 Prop 。它对我有用:

dayPickerProps={{
        disabledDays: {
            before: new Date()
        }
    }}

希望对您有所帮助!

关于reactjs - 日期选择器 - 禁用今天之前的几天不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55258635/

相关文章:

html - 在 Toggle 上添加第二个类时出现语法错误

css - 如何使 react-day-picker 变宽以填满 Web 应用程序移动版本中的所有屏幕

javascript - 具有 redux 形式的 React-day 选择器

javascript - `DatePickerInput` "className"属性为 `&lt;input/>`

reactjs - 扩展面板图标转换(Mat. UI)

reactjs - 如果我没有更改状态的引用,为什么 React 会调用渲染函数?

javascript - 如何删除CSS中的按钮边框?

reactjs - 监听react-day-picker输入 'change'事件

javascript - 使用 React Router 4.2 渲染侧边栏和其他组件