【问题标题】:How can I add a date range with a single input to react-datepicker如何将带有单个输入的日期范围添加到 react-datepicker
【发布时间】:2021-05-27 01:40:30
【问题描述】:

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

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 />}
          />
}

【问题讨论】:

    标签: javascript reactjs react-datepicker


    【解决方案1】:

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

    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);
    }
    

    【讨论】:

    • 啊 好的,有道理,谢谢!我需要对格式化做什么? startDate 和 endDate 的格式不正确,如果我提供 value 属性,它只会返回格式化的 startDate。
    • 您必须在使用数据时对其进行格式化,或者保留一份具有格式化版本的副本。以下是一些格式化日期的好方法:flaviocopes.com/how-to-format-date-javascript
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2013-01-18
    • 2019-01-19
    • 1970-01-01
    • 2021-07-14
    相关资源
    最近更新 更多