首页 > 解决方案 > 如何修复 react-dates SingleDatePicker 无效日期?

问题描述

我正在尝试使用 SingleDatePicker 在数据库中编辑/添加事件。我可以在这个日历年之外创建一个新事件,但是当我去编辑 2019 年之后的任何事件时,我在 SingleDatePicker 中收到一个“无效日期”,单击它会导致我的网站崩溃并给出错误“未捕获的类型错误:month必须是一个有效的时刻对象”。我正在使用momentjs。值得注意的是,所有日期都是从我的 API 以完全相同的格式传递的,而且我只有在 2019 年之后的日期出现这个问题。当日期在 2019 年之后,我收到错误“警告:失败的道具类型:无效date的道具object提供给的类型SingleDatePicker,预期Moment的。”我正在使用时刻,所以我不明白这个错误。

我没有找到有关此问题的文档。

`componentWillReceiveProps() {
if (this.props.date !== null) {
  let newDate = moment(this.props.date, "ddd, MMM DD yyyy HH:mm:ss 
Z");
  this.setState({ date: newDate });
}
....

....
....
....

<SingleDatePicker
                date={this.state.date} 
                isOutsideRange={() => false}
                onDateChange={date => this.setState({ date })} /
                focused={this.state.focused} 
                onFocusChange={({ focused }) => this.setState({ 
                focused })} 
                id="selectedDate" ,
              />`

标签: reactjsmomentjsreact-dates

解决方案


我做了一个为我解决的解决方法。当日期为空时(如我们的案例),您可以将其设置为今天的日期,如下所示:

onDateChange={date => this.setState({ date || moment().format('YYYY-MM-DD') })}

推荐阅读