对话框中的材料 UI 更改日期字段样式

Posted

技术标签:

【中文标题】对话框中的材料 UI 更改日期字段样式【英文标题】:Material UI change date field style in dialog 【发布时间】:2021-11-10 06:51:03 【问题描述】:

我在我的 React 项目中使用 Material-UI,并使用它的日期选择器组件来呈现日期项。但默认样式不适合我的需要,我想在日期选择器对话框中使用选择器作为日期显示,替换其文本字段。查看 Material-UI 的日期选择器相关 API 后,我找不到合适的方法。有什么帮助吗?这将非常有帮助。

下图是我要渲染的日期选择器样式:

wanted style

下图为其默认样式,默认为文字:

default style

代码如下:

import  useState  from "react";
import  makeStyles  from "@material-ui/styles";
import  MuiPickersUtilsProvider, KeyboardDatePicker  from "@material-ui/pickers";
import DateFnsUtils from "@date-io/date-fns";

const useStyle = makeStyles(
  root: 
    marginBottom: "3rem",
  ,
);

const CustomizeDatePicker = () => 
  const classes = useStyle();
  const [selectedDate, setSelectedDate] = useState(new Date());

  return (
    <div className=classes.root>
      <MuiPickersUtilsProvider utils=DateFnsUtils>
        <KeyboardDatePicker
          autoOk
          label="end date"
          format="yyyy-MM-dd"
          views=["year", "month", "date"]
          openTo="date"
          value=selectedDate
          onChange=setSelectedDate
        />
      </MuiPickersUtilsProvider>
    </div>
  );
;

export default CustomizeDatePicker;

【问题讨论】:

【参考方案1】:

首先,第 3 方库通常不像您希望的那样灵活。如果它只是样式,则可以使用您的 css 使用它们的类名覆盖它并相应地设置样式。可悲的是,当涉及到功能时,无论它们暴露什么,您都可以使用它。在极少数情况下,他们允许使用扩展功能对其组件进行原型设计,但这里并非如此。

我建议使用 https://material-ui-pickers.dev/ 作为 material-ui 甚至建议它,因为扩展功能。

然后看看他们的 API 以及它能做什么https://material-ui-pickers.dev/api/DatePicker

您唯一可能的解决方案是创建您自己的日期选择器。

【讨论】:

以上是关于对话框中的材料 UI 更改日期字段样式的主要内容,如果未能解决你的问题,请参考以下文章

在材料ui的日期选择器中更改formatDate

如何*保存*角度材料模态对话框的结果?

UI组件——时间选择器简介

jquery ui对话框中的基础日期选择器在Internet Explorer中不起作用

如果输入在材料 ui 对话框中,react-hook-form 的 setValue 方法不起作用

如何呈现材料 UI 输入控件而不是材料 UI 日期选择器的文本字段