Глядя на документы для react-datepicker
, не похоже, что onChange
получает событие, но дату.
Вы должны использовать отдельный обработчик для обработчик изменения даты, поскольку они ожидают разные подписи.
const onChange = e => setFormData({...formData, [e.target.name]:e.target.value})
const onDateChange = date => setFormData({...formData, due_at: date})
Существует множество других решений, которые сработают, если вы действительно захотите придерживаться одного обработчика изменений, но я рекомендую просто создать два, как указано выше.
Но .. вы могли бы сделать что-то вроде этого (я не очень рекомендую это):
const onChange = e => {
if (typeof e === 'object') {
setFormData({...formData, [e.target.name]:e.target.value})
} else {
setFormData({...formData, due_at: e})
}
}
Или, поскольку вы уже объявляете новые встроенные функции (кстати, это не нужно, просто сделайте onChange={onChange}
, если вы не используете следующий подход), вы можете сделать это:
const onChange = (name, value) => setFormData({...formData, [e.target.name]:e.target.value})
// Regular inputs
onChange={e => onChange('input name', e.target.value)}
// Date input
onChange={date => onChange('input name', date)}
Суть в том, что вы должны обратить внимание на то, что ожидается от onChange
. Он будет отличаться в зависимости от типа ввода или реализации библиотеки.