Bootstrap

React中Ant Design组件日期编辑回显

 这个编辑事件绑定后,为了将日期数据会先到RangePicker组件,需要确保itemDate字端被正确设置,其格式应该和itemDate组件的格式是一样的。

通常, RangePicker 组件期望接收一个数组作为值,这个数组包含两个元素:开始时间和结束时间(都是 moment对象或者可以被 moment 解析的字符串格式)。

... ... 略
      title: '结束时间',
      dataIndex: 'end_time',
      align: 'center',

    },
    {
      title: '操作',
      align: 'center',
      render: (record) => (
        <div style={{ width: '90%', display: 'flex', justifyContent: 'space-between', marginLeft: '10px' }}>
          <Button type="primary" onClick={() => handleEdit(record)}>编辑</Button>
          <Button type="primary" danger>下架</Button>
        </div>
      ),
    },
  ];
// 点击编辑按钮
  const handleEdit = (record: any) => {
    console.log(record);
    const startMoment = moment(record.start_time, "YYYY-MM-DD"); // 确保这里的格式与您的数据格式匹配
    const endMoment = moment(record.end_time, "YYYY-MM-DD"); // 确保这里的格式与您的数据格式匹配
    setEditingItem(record);  // 设置正在编辑的项目数据
    setIsEditing(true);  // 设置为编辑模式
    setOpen(true);  // 打开表单弹窗
    //编辑回显
    form.setFieldsValue({
      itemCompany: record.account,
      itemTitle: record.title,
      itemAddress: record.address,
      itemDate: [startMoment, endMoment], // 将moment对象数组设置到itemDate字段
    });  // 将编辑项目的数据填充到表单中
  };

请注意,在此之前使用的moment库来解析日期字符串。如果我们项目中还没有引入moment,需要先安装:

npm install moment

然后需要再我们需要用到的页面引入moment:

import moment from 'moment';

另外还需要确保RangePicker组件中的format属性和我们日期字符串相匹配,这样RangePicker才能正确的显示和解析。在我的代码中format属性已经设置为 'YYYY-MM-DD HH:mm:ss' 这应该与我的起止时间字段是一致的。如果不一致就会发生Invalid Date字段。

具体报错我下一篇博客会写到,这些都是我在写项目中遇到的问题,虽然算不上什么大问题,但是在制作项目时也是印象深刻,为了避免以后再因为忘记或者粗心遇到此类问题,就先记录下来!

;