React JS Material UI,分配复杂对象时,日期时间选择器不会更改日期

时间:2020-11-10 03:55:55

标签: reactjs material-ui

我是新来响应开发和使用实质性UI的人。我需要开发一个带有动态列的表,该列具有包含日期​​和时间输入控件的添加行。 我计划维护一个对象数组,并将每个对象设置为日期和时间选择器的值。最初是在设置状态时设置的值,然后在日期或时间更改后,更改不会显示在控制器中。

以下是代码的缩减版本,其中将对象数组添加到状态。单击按钮或更改时间或日期选择器时,它将不会显示在控件中。

我注意到的一件事是,在更改控件后更改代码(在代码中的随机位置添加空格)时,更改会得到反映。

    import 'date-fns';
import React from 'react';
import Grid from '@material-ui/core/Grid';
import DateFnsUtils from '@date-io/date-fns';
import {
  MuiPickersUtilsProvider,
  KeyboardTimePicker,
  KeyboardDatePicker,
} from '@material-ui/pickers';

export default function MaterialUIPickers() {

  let addRowData: {
    sessionItem: string,
    sessionTimes: { headder: string, startTime: Date | null, endTime: Date | null }[]
} = {
    sessionItem: "Test",
    sessionTimes:[{ headder: "Test", startTime: new Date('2014-08-18T21:11:54'), endTime: new Date('2014-08-18T21:11:54') }]
};

  // The first commit of Material-UI
  const [selectedDate, setSelectedDate] = React.useState(
    addRowData
  ); 

  const handleDateChange = (date: Date | null) => {
    selectedDate.sessionTimes[0].startTime=date;
    setSelectedDate(selectedDate);
  };   

const onButtonClick = ()=>{
  selectedDate.sessionTimes[0].startTime=new Date();
  setSelectedDate(selectedDate);
}

  return (
    <Grid container justify="space-around">
    <MuiPickersUtilsProvider utils={DateFnsUtils}>
        <KeyboardDatePicker
          disableToolbar
          variant="inline"
          format="MM/dd/yyyy"
          margin="normal"
          id="date-picker-inline"
          value={selectedDate.sessionTimes[0].startTime}
          onChange={handleDateChange}
          KeyboardButtonProps={{
            'aria-label': 'change date',
          }}
        />
        <KeyboardDatePicker
          margin="normal"
          id="date-picker-dialog"
          format="MM/dd/yyyy"
          value={selectedDate.sessionTimes[0].startTime}
          onChange={handleDateChange}
          KeyboardButtonProps={{
            'aria-label': 'change date',
          }}
        />
        <KeyboardTimePicker
          margin="normal"
          id="time-picker"
          value={selectedDate.sessionTimes[0].startTime}
          onChange={handleDateChange}
          KeyboardButtonProps={{
            'aria-label': 'change time',
          }}
        />
    </MuiPickersUtilsProvider>
    <input type="Button" value="set" onClick={onButtonClick}/>
      </Grid>
  );
}

0 个答案:

没有答案