如何更改 material table 反应中过滤的日期格式?

How to change the filtered date format in material table react?

在materialtable反应中,我有以下列:

columns={[
            {
              title: 'Name',
              field: 'name',
              type: 'string',
            },
            {
              title: 'Age',
              field: 'age',
              type: 'string',
            },
            {
              title: 'DOB',
              field: 'birthDate',
              type: 'date',
              dateSetting: {
                format: 'dd/MM/yyyy'
              },
            }
         ]}

当我尝试过滤日期列时,它显示过滤日期,例如 2 月 24 日,但我希望日期像 dd/MM/yyyy格式.

如何更改值。我已经尝试提供 dateSetting,但它不适用于过滤器。 谢谢。

您可以通过定义自己的 filterComponent 来实现。这是我基于此 solution:

制作的一个工作示例

首先,您需要创建要用作过滤器的组件,在我的例子中,我使用了 material-ui/pickers 中的 KeyboardDatePicker,但是可以吗随心所欲:


const CustomDatePicker = (props) => {
  const [date, setDate] = useState(null);

  return (
    <MuiPickersUtilsProvider utils={DateFnsUtils}>
      <KeyboardDatePicker
        margin="normal"
        id="date-picker-dialog"
        label="Date picker"
        format="dd/MM/yyyy"
        clearable
        value={date}
        onChange={(event) => {
          console.log("Date picker value: ", event);
          console.log(props.columnDef.tableData.id);

          setDate(event);
          props.onFilterChanged(props.columnDef.tableData.id, event);
        }}
        KeyboardButtonProps={{
          "aria-label": "change date"
        }}
      />
    </MuiPickersUtilsProvider>
  );
};

关键方面是调用通过 props 传递的 onFilterChanged 函数。

然后,在您的列定义上实现您的组件,如下所示:

 const tableColumns = [
    { title: "Client", field: "id" },
    { title: "Name", field: "name" },

    {
      title: "Date",
      field: "date",
      type: "date",
      dateSetting: { locale: "en-GB" },
      filterComponent: (props) => <CustomDatePicker {...props} />
    }
  ];

完整代码和沙盒 here。希望对你有用!