Как исправить недопустимую дату выбора даты с помощью react-dates SingleDatePicker?

#reactjs #momentjs #react-dates

#reactjs #momentjs #реагирующие даты

Вопрос:

Я пытаюсь использовать SingleDatePicker для редактирования / добавления событий в базу данных. Я могу создать новое событие за пределами этого календарного года, но когда я перехожу к редактированию любого события после 2019 года, я получаю «недопустимую дату» в моем SingleDatePicker, которая приводит к сбою моего сайта при нажатии и выдает ошибку «Uncaught TypeError: month должен быть действительный объект moment» . Я использую momentjs. Стоит отметить, что все даты передаются из моего API в точно таком же формате, и у меня есть эта проблема только с датами с годами после 2019 года. Когда дата после 2019 года, я получаю сообщение об ошибке «Предупреждение: сбойный тип реквизита: недопустимый реквизит date типа object , предоставленный SingleDatePicker , ожидаемый Moment . » Я использую 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" ,
              />`
  

Комментарии:

1. Можете ли вы создать codesandbox и поделиться своим кодом? Это будет легче отлаживать

Ответ №1:

Я нашел обходной путь, который был решен для меня. Когда дата равна нулю (как в нашем случае), вы можете установить ее на сегодняшнюю дату с таким моментом:

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