如何将具有单个输入的日期范围添加到 react-datepicker

How can I add a date range with a single input to react-datepicker

我想创建一个日期范围组件,将开始日期和结束日期放入一个输入中。我尝试使用这里的例子 https://reactdatepicker.com/#example-date-range-for-one-datepicker 但它似乎没有显示结束日期。我已经设置了一个自定义输入来显示这两个值,但我不知道如何在我的 datePicker 中使用单个 onChange 道具更新它们。我相信这导致组件失败并出现 RangeError:无效时间值。

const CustomDatePicker = (props) => {
  const {
    className,
    startDateId,
    endDateId,
    startLabel,
    endLabel,
    displayFormat,
    onStartDateChange,
    onEndDateChange,
    locale,
    startDate,
    endDate,
  } = props

const CustomInput = ({ value, onClick}) => {
    return 
     
        <input
          className="my-input"
          type="text"
          onClick={onClick}
          value={`${startDate} - ${endDate}`}
        />
      </div>
   
    )

return <DatePicker
            id={startDateId}
            selected={startDate}
            selectsRange
            startDate={startDate}
            endDate={endDate}
            placeholderText={placeholder}
            dateFormat={displayFormat}
            onChange={onStartDateChange}
            locale={selectLocale(locale)}
            customInput={<CustomInput />}
          />
}

如果您关注链接到的网站,您会看到当输入更改时,它同时更改了开始日期和结束日期。 这样您就可以使它们都保持更新。 所以这看起来像:

JSX:

          <DatePicker
            id={startDateId}
            selected={startDate}
            selectsRange
            startDate={startDate}
            endDate={endDate}
            placeholderText={placeholder}
            dateFormat={displayFormat}
            onChange={onChange}
            locale={selectLocale(locale)}
            customInput={<CustomInput />}
          />
         
         <input value={`${startDate} - ${endDate}`} />

函数:

const onChange = dates => {
    const [start, end] = dates;
    setStartDate(start);
    setEndDate(end);
}