1

我是反应钩子的新手,我试图将 react-datepicker 从类转换为带有钩子的函数。问题是当我触发 onChange 时会显示(RangeError: Invalid time value),但默认的“选定”开始日期呈现正常。这可以用钩子完成吗?

 import React, { useState, Fragment } from 'react';
 import Datepicker from 'react-datepicker';

 const Example = () => {

 const [startDate, setStartDate] = useState(new Date());

 const handleChange = date => {
   setStartDate({ startDate: date });
  }

 return (
   <Fragment>
    <Datepicker
     selected={startDate}
     onChange={handleChange}
    />
   </Fragment>
 )
}

export default Example;

我希望在没有“RangeError:无效时间值”的情况下更改 startDate 状态。

4

2 回答 2

3

问题是您不是在状态中插入日期,而是在对象中。

改变:

setStartDate({ startDate: date });

至:

setStartDate(date);
于 2019-06-07T15:37:16.257 回答
0

我在我的项目中使用它作为可重用组件

    return (
      <DatePicker
        fixedHeight
        showFullMonthYearPicker
        showDisabledMonthNavigation
        selected={selectedDate}
        value={valueDate}
        onChange={(day) => onChange && onChange(day, flag)}
        className="react-datepicker__input-container-days"
      />
    );
  };

这是我调用我的组件的地方

{renderDateDay({       
          flag: 0,
                                valueDate: manuFucturedValue.day,
                                selectedDate:
                                  (manuFucturedValue.day &&
                                    new Date(manuFucturedValue.day)) ||
                                  null,
                                onChange: (day) =>
                                  handleDateOnchange(day, "day", 0),
于 2021-09-03T11:32:53.167 回答