Невозможно установить состояние для выбранной даты из DatePicker - PullRequest
0 голосов
/ 22 марта 2019

Так что у меня возникли проблемы с настройкой состояния для даты, выбранной из этого DatePicker

изменение:

  change = (e) => {
    this.setState({
      [e.target.name]: e.target.value,
    });
  };

Компонент DatePicker:

<DatePicker
      selected={this.state.startDate}
      onChange={e => this.change(e)}
 />

Если я использую дату по умолчанию при первой перезагрузке страницы, проблем не возникает. Но когда выбирается дата, я получаю сообщение об ошибке.

Ошибка типа: не удается прочитать свойство 'имя' из неопределенного.

Что я делаю не так?

1 Ответ

0 голосов
/ 22 марта 2019

SyntheticEvent объединяется. Это означает, что объект SyntheticEvent будет повторно использован и все свойства будут аннулированы после вызова обратного вызова события. Это из соображений производительности. Таким образом, вы не можете получить доступ к событию асинхронным способом.

Более подробную информацию можно найти здесь .


Поскольку setState является асинхронным, event будет null к тому времени, как оно будет оценено в setState.

Вместо этого деконструируйте event до setState:

change = ({ target: { name, value } }) => {
  this.setState({
    [name]: value,
  });
}

или

change = e => {
  const { name, value } = e.target;
  this.setState({
    [name]: value,
  });
}
...