Инпут с датой записывается в state как undefined

96
04 января 2021, 23:40

При выборе даты, значение в state не записывается.Проблема в handleChange как его переписать? Компонент в отдельном файле

Вот сам компонент

class LocalizedUtils extends DateFnsUtils { 
    getDatePickerHeaderText(date) { 
        return format(date, "d MMM yyyy", {locale: this.locale}); 
    } 
} 
 
function DateFnsLocalizationExample() { 
    const [selectedDate, handleDateChange] = useState(new Date()); 
 
    return ( 
        <MuiPickersUtilsProvider utils={LocalizedUtils} locale={ruLocale}> 
            <div className="md-form"> 
                <div className="d-flex"> 
                <MDBIcon far className="icon" icon="calendar-alt" /> 
                <DatePicker 
                    clearable 
                    helperText="Дата вашего приема" 
                    value={selectedDate} 
                    onChange={handleDateChange} 
                    clearLabel="очистить" 
                    cancelLabel="Отмена" 
                    minDate={new Date("2019-04-01")} 
                    maxDate={new Date("2019-06-01")} 
                /> 
                </div> 
            </div> 
        </MuiPickersUtilsProvider> 
    ); 
} 
 
export default DateFnsLocalizationExample;

import React from "react"; 
import {Field, reduxForm} from "redux-form"; 
import {MDBCol, MDBContainer, MDBIcon, MDBInput, MDBRow} from "mdbreact"; 
import DatePick from "./DatePicker/TimePicker"; 
import {validate} from "./validation"; 
import InputMask from "react-input-mask"; 
import MaterialInput from "@material-ui/core/Input"; 
import axios from "axios"; 
 
const warn = values => { 
    const warnings = {}; 
    if (values.age < 19) { 
        warnings.age = "Hmm, you seem a bit young..."; 
    } 
    if (!values.complaints) { 
        warnings.complaints = 
            "Желательно заполнить ваши жалобу, можно максимально кратко, чтоб доктору знать с чем он бдует иметь дело"; 
    } 
    if (!/^[а-яё]+$/i.test(values.username)) { 
        warnings.username = "Указывайте пожалуйста на русском ваши данные"; 
    } 
    return warnings; 
}; 
const renderMask = ({ 
                        input, 
                        icon, 
                        label, 
                        id, 
                        type, 
                        meta: {touched, error, warning} 
                    }) => ( 
    <div> 
        <div className="d-flex"> 
            <MDBIcon icon="phone" className="icon"/> 
            <InputMask mask="+375 (99) 999-99-99" disabled={false} {...input}> 
                {inputProps => ( 
                    <MaterialInput 
                        name="mobile" 
                        {...inputProps} 
                        type="tel" 
                        fullWidth 
                        disableUnderline 
                        placeholder="Ваш номер телефона" 
                    /> 
                )} 
            </InputMask> 
            {touched && 
            ((error && ( 
                    <span className="error_message">{`Поле ${label} ${error}`}</span> 
                )) || 
                (warning && <span className="warning-color">{warning}</span>))} 
        </div> 
    </div> 
); 
const renderField = ({ 
                         input, 
                         icon, 
                         label, 
                         id, 
                         type, 
                         meta: {touched, error, warning} 
                     }) => ( 
    <div> 
        <div> 
            <MDBInput 
                {...input} 
                id={id} 
                label={label} 
                type={type} 
                className="form-control" 
                icon={icon} 
            /> 
            {touched && 
            ((error && ( 
                    <span className="error_message">{`Поле ${label} ${error}`}</span> 
                )) || 
                (warning && <span className="warning-color">{warning}</span>))} 
        </div> 
    </div> 
); 
 
class ValidationForm extends React.Component { 
    constructor(props) { 
        super(props); 
        this.state = { 
            username: "", 
            lastname: "", 
            date: "", 
            email: "", 
            mobile: "", 
            age: "", 
            complaints: "", 
            doctor: "" 
        }; 
        this.handleChange = this.handleChange.bind(this); 
        this.Submit = this.Submit.bind(this); 
    } 
 
    handleChange = e => { 
        this.setState({[e.target.name]: e.target.value}); 
    }; 
 
    async Submit() { 
        const { 
            username, 
            lastname, 
            date, 
            email, 
            mobile, 
            age, 
            complaints, 
            doctor 
        } = this.state; 
 
        const form1 = await axios.post("/api/patient", { 
            username, 
            lastname, 
            date, 
            email, 
            mobile, 
            age, 
            complaints, 
            doctor 
        }); 
 
    } 
 
    render() { 
        const {handleSubmit, pristine, reset, submitting} = this.props; 
        return ( 
            <MDBContainer> 
                <MDBRow className="flex-center"> 
                    <MDBCol md="6"> 
                        <form onSubmit={handleSubmit(this.Submit)} className="md-form"> 
                          Change={this.handleChange} 
                            <Field 
                                name="date" 
                                icon="user" 
                                type="text" 
                                id="form3" 
                                component={DatePick} 
                                onChange={this.handleChange} 
                            /> 
                            <div> 
                                <button type="submit" disabled={submitting} className="btn btn-primary"> 
                                    Отправить ваши данные 
                                </button> 
                                <button 
                                    type="button" 
                                    disabled={pristine || submitting} 
                                    onClick={reset} 
                                > 
                                    Clear Values 
                                </button> 
                            </div> 
                        </form> 
                    </MDBCol> 
                </MDBRow> 
            </MDBContainer> 
 
        ) 
    } 
} 
 
export default reduxForm({ 
    form: "ValidationForm", // a unique identifier for this form 
    validate, // <--- validation function given to redux-form 
    warn // <--- warning function given to redux-form 
})(ValidationForm);

Answer 1
<DatePicker
  clearable
  helperText="Дата вашего приема"
  value={selectedDate}
  onChange={event => handleDateChange(event.value)}
  clearLabel="очистить"
  cancelLabel="Отмена"
  minDate={new Date("2019-04-01")}
  maxDate={new Date("2019-06-01")}
/>
READ ALSO
Удалить элемент списка по клику на него

Удалить элемент списка по клику на него

Необходимо удалить или изменить класс элемента li по клику на негоНа чистом js Пример списка:

121
Поиск и замена js

Поиск и замена js

Есть некий html в переменнойНужно найти все ссылки и заменить href каждой по принципу: href первой ссылки - текст первого элемента массива, href второй...

104
Унаследовать class от HTMLElement

Унаследовать class от HTMLElement

Код ниже в моём понимание присваивает переменной MyTimerProto ссылку на объект у которого есть свой метод tick и прототипом объекта является HTMLElementprototype

121