У меня есть этот класс, использующий сборщик материалов из пользовательского интерфейса. Я не могу распечатать выбранный элемент
import React, { useState } from 'react';
import { makeStyles } from '@material-ui/core/styles';
import { MuiPickersUtilsProvider, DatePicker } from "@material-ui/pickers";
import MomentUtils from "@date-io/moment";
const styles = theme => ({
container: {
display: 'flex',
flexWrap: 'wrap',
},
textField: {
marginLeft: theme.spacing(1),
marginRight: theme.spacing(1),
width: 200,
},
});
class YearPickerClass extends React.Component {
state = {
yearFrom: new Date(1900, 1, 1, 1, 1, 1, 1),
yearTo: new Date(1950, 1, 1, 1, 1, 1, 1),
}
componentWillReceiveProps(props) {
console.info("willReceive")
console.info(props)
}
handleChangeEvent = (date) => {
console.info("date")
console.info(date) //prints 1900 even if I select a different year
}
render() {
const classes = this.props;
var from = new Date(1900, 1, 1, 1, 1, 1, 1);
var to = new Date(1950, 1, 1, 1, 1, 1, 1);
return (
<form className = {classes.container} noValidate>
<MuiPickersUtilsProvider utils = {MomentUtils}>
<DatePicker
key = "yearFrom"
views = {["year"]}
label = "Year From"
value = {this.state.yearFrom}
onChange = {this.handleChangeEvent}
animateYearScrolling
minDate = {from}
maxDate = {to}
/>
</MuiPickersUtilsProvider>
</form>
);
}
}
export default (YearPickerClass);
Любая идея, как получить текущий выбранный элемент внутри функции handleChangeEvent?





Как только вы конвертируете дату, полученную с помощью moment, вы увидите, что фактически получили новое значение в своей функции handleChangeEvent:
handleChangeEvent = date => {
console.info(moment(date).format('YYYY'));
};
Пожалуйста, посмотрите, как это работает: https://codesandbox.io/embed/магическая-снежинка-4fzgn
Я обновил свой ответ примером кода. Обратите внимание, что значение действительно обновляется в консоли.
начальный выбор всегда печатается, я пытаюсь распечатать вновь выбранный объект