Привет, надеюсь, это кому-нибудь поможет -
Что происходит с Компонент состоит в том, что метод onChange по умолчанию возвращает дату (2019-08-01), а не объект-обработчик события элемента.Чтобы противостоять этому, нам нужно создать объект внутри метода onChange, который имитирует target.id и target.value обработчика событий
Другие компоненты, такие как работает как обычно.Проверьте это:
Вот как должен выглядеть компонент:
<DatePicker
label="myDate"
value={state.myDate}
id="myDate"
onChange={(newDate) => {
handleChange({
target: {
id: "myDate",
value: newDate
}
})
}} />
Вот полный код:
import React, { useState, useEffect } from "react";
import "materialize-css/dist/css/materialize.min.css";
import "materialize-css/dist/js/materialize.min.js";
import { DatePicker } from "react-materialize";
const PickDate = (props) => {
const [state, setState] = useState({myName: "Mags", myDate: "2019-08-01"});
const handleChange = (e) => {
const key = e.target.id;
const val = e.target.value;
const newState = {...state};
newState[key] = val;
setState(newState);
}
return (
<React.Fragment>
<input type="text" value={state.myName} id="myName" onChange={handleChange} />
<DatePicker
label="myDate"
value={state.myDate}
id="myDate"
onChange={(newDate) => {
handleChange({
target: {
id: "myDate",
value: newDate
}
})
}} />
</React.Fragment>
);
}
export default PickDate;
PS.он использует React Hooks - но он будет работать и на обычных классах.