javascript - 如何在material-ui中将日期对象转换为字符串? ReactJS。在表格上显示日期

标签 javascript reactjs material-ui

material-ui中的DatePicker生成日期对象。我想在 table 上显示选择的值。为了显示这一点,我需要将对象转换为字符串,因为不可能将对象传递到表格单元格。 我必须在哪个位置以及如何使用 dateToString() 函数在表格行上显示日期?或者也许有更好的方法将日期从 DatePicker 传递到表?

父组件:

class Home extends Component {
  constructor(props) {
    super(props);
    this.state = { data: []};
}

handleSubmit = (submission) =>{
   this.setState({
   data: [...this.state.data, submission]
})}

render() {
  return (
   <div>
      <AddTaskDialog
        onSubmit={this.handleSubmit}            
      />
      <TableTasks
        data={this.state.data}
        header={[
          {
            name: "No",
            prop: "no"
          },
          {
            name: "Task",
            prop: "nameTask"
          },
          {
            name: "Deadline",
            prop: 'deadline'
          },
          {
            name: "Priority",
            prop: "priority"
          }
        ]}
      />
    </div>
   );
  }}
 export default Home;

子组件:

export default class AddTaskDialog extends React.Component {
  constructor(props) {
   super(props);
   this.state = { priority: '', nameTask: '', deadline: new Date(), open:false };
   this.handleChangeDate = this.handleChangeDate.bind(this);
   this.handleTextFieldChange = this.handleTextFieldChange.bind(this);
   this.handleChangeSelectField = this.handleChangeSelectField.bind(this);
   this.handleOpen = this.handleOpen.bind(this);
 }

 handleTextFieldChange = (event) =>{
   this.setState({
     nameTask: event.target.value,  
  });}

 handleChangeSelectField = (event, index, priority) => {
   this.setState(
        {priority}
 );}

 handleChangeDate = (event, date) => {
   this.setState({
   deadline: date
 });}

 handleOpen = () => {
  this.setState({open: true});
 };

 onSubmit = (e) => {
   e.preventDefault();
   this.setState({ open: false });
 };

render() {
  return (
   <form>
    <AddButton onClick={this.handleOpen} />
    <Dialog title="Add new task" actions={this.props.actions} modal={false} open={this.state.open} >
    <TextField
      name="nameTask"
      floatingLabelText="Task"
      value={this.state.nameTask}
      onChange={e => this.handleTextFieldChange(e)}
      errorText={this.state.nameTaskError}
      floatingLabelFixed
    />

    <DatePicker floatingLabelText="Deadline" value={this.state.deadline} onChange={this.handleChangeDate}/>


    <SelectField floatingLabelText="Priority" value={this.state.priority} onChange={this.handleChangeSelectField} >
        <MenuItem value="High" primaryText="High" />
        <MenuItem value="Medium" primaryText="Medium" />
        <MenuItem value="Low" primaryText="Low" />
      </SelectField>
    <RaisedButton label="Submit" onClick={e => this.onSubmit(e)} primary />
  </Dialog>  
 </form>
);}}

子组件:

const row = (x, i, header) => {
 <TableRow key={`tr-${i}`}>
   {header.map((y, k) =>
   <TableRowColumn key={`trc-${k}`}>
      {x[y.prop]}
   </TableRowColumn>)}
 </TableRow>}

export default ({ data, header }) =>
 <Table>
  <TableHeader>
   <TableRow>
    {header.map((x, i) =>
      <TableHeaderColumn key={`thc-${i}`}>
        {x.name}
      </TableHeaderColumn>
    )}
   </TableRow>
  </TableHeader>
  <TableBody>
  {data.map((x, i) => row(x, i, header))}
  </TableBody>
 </Table>;

最佳答案

handleChangeDate 中执行此转换,从 event.date 创建字符串以供查看。 或者使用 formatDate prop 在日期选择器中正确执行此操作,解决方案在另一个 answer

关于javascript - 如何在material-ui中将日期对象转换为字符串? ReactJS。在表格上显示日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48021159/

相关文章:

javascript - 通用分析 : Multiple inline OnClick events triggered by single click

reactjs - 如何在 Cypress 中测试 React Material UI Drawer 组件属性值

javascript - ESLint simple React App.js 括号后出现意外的换行符 function-paren-newline

css - 使用 Material-UI 将 Logo 与中心对齐

javascript - 动态创建的元素上的事件绑定(bind)?

javascript - body onload =""找不到函数

javascript - AngularJS 组复选框验证

javascript - 避免递归函数中的状态突变(Redux)

reactjs - 在 Material-UI v5 中,我应该更喜欢 css Prop 而不是 sx Prop ,反之亦然?

javascript - 如何使用对话框与material-ui react