代码之家  ›  专栏  ›  技术社区  ›  RamAlx

React Datepicker正在以Delay OnClick打开

  •  1
  • RamAlx  · 技术社区  · 6 年前

    我正面临一个与react日期选择器奇怪的问题。我已经使datepicker与redux表单兼容,代码如下:

    <DatePicker
      customInput={<CustomDateInputNew {...props} />}
      onChange={date => {
        props.input.onChange(date ? formatValueToState(date) : "");
        if (props.onSelect) {
          props.onSelect(date);
        }
      }}
      dateFormat="DD/MM/YYYY"
      openToDate={props.openToDate}
      selected={
        props.input.value ? parseStateToValue(props.input.value) : undefined
      }
      filterDate={day => isDateUnavailable(day, props.availability)}
      locale={moment.locale("en-gb")} //sets monday first day of week
    />
    

    filterDate函数显示为启用包含在数组中的日期,其实现如下:

    export const isDateUnavailable = (day, daysArray) => {
      if (!days) {
        return true;
      }
      return days.filter(item => moment(item).isSame(day)).length > 0;
    };
    

    其中days是一个格式为[2018-09-09]的数组。此日期选取器将显示此数组中包含的日期。我面临和问题的日期选择器出现在两个或三秒钟后点击。为什么会这样?其他人是否面临相同或相对的问题?过滤日期有问题吗??谢谢!

    2 回复  |  直到 6 年前
        1
  •  2
  •   Tholle    6 年前

    isDateUnavailable

    props.availability includeDates

    class Example extends React.Component {
      render() {
        return (
          <DatePicker
            includeDates={[
              moment("2018-09-09"),
              moment("2018-09-09").subtract(1, "days")
            ]}
          />
        );
      }
    }
    
        2
  •  1
  •   Ilario Pierbattista    6 年前

    isDateUnavailable

    export const checkAvailability = (availableDays) => 
      (!availableDays) 
      ? () => true // If the array is empty, just create a function which returns always true!
      : (currentDay) => 
        availableDays.filter(
          dayString => dayString === currentDay.format('YYYY-MM-DD')
        ).lenght > 0;
    

    filterDate={checkAvailability(props.availability)}