【问题标题】:How can I change the icon in material-ui date picker for React如何更改 React 的 Material-ui 日期选择器中的图标
【发布时间】:2020-02-06 03:00:55
【问题描述】:

如何更改材质 UI 日期选择器图标?

我在代码或文档的 API 部分的任何地方都看不到它。

这是他们文档的链接:https://material-ui.com/components/pickers/

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() {
  // The first commit of Material-UI
  const [selectedDate, setSelectedDate] = React.useState(new Date('2014-08-18T21:11:54'));

  const handleDateChange = date => {
    setSelectedDate(date);
  };

  return (
    <MuiPickersUtilsProvider utils={DateFnsUtils}>
      <Grid container justify="space-around">
        <KeyboardDatePicker
          disableToolbar
          variant="inline"
          format="MM/dd/yyyy"
          margin="normal"
          id="date-picker-inline"
          label="Date picker inline"
          value={selectedDate}
          onChange={handleDateChange}
          KeyboardButtonProps={{
            'aria-label': 'change date',
          }}
        />
      </Grid>
    </MuiPickersUtilsProvider>
  );
}

其他一切正常,我只需要将图像编辑为不同的图标。

【问题讨论】:

标签: reactjs material-ui


【解决方案1】:

首先通过 Google Web Fonts 将 Material 图标字体包含到您的项目中:

<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />

那么你需要像这样导入 Icon 组件

import Icon from "@material-ui/core/Icon";

然后通过使用 Icon 组件包装图标名称(字体连字),在 KeyboardDatePicker 组件中包含“keyboardIcon”属性,如下所示:

<KeyboardDatePicker
      disableToolbar
      variant="inline"
      format="MM/dd/yyyy"
      margin="normal"
      id="date-picker-inline"
      label="Date picker inline"
      value={selectedDate}
      onChange={handleDateChange}
      KeyboardButtonProps={{
        'aria-label': 'change date',
      }}
      keyboardIcon={<Icon>add_circle</Icon>}
    />

如果您使用的是 Font Awesome,那么您必须使用 Icon 组件的 className 属性来提供类名:

<KeyboardDatePicker
      disableToolbar
      variant="inline"
      format="MM/dd/yyyy"
      margin="normal"
      id="date-picker-inline"
      label="Date picker inline"
      value={selectedDate}
      onChange={handleDateChange}
      KeyboardButtonProps={{
        'aria-label': 'change date',
      }}
      keyboardIcon={keyboardIcon={<Icon className="fa fa-plus-circle" />}}
    />

【讨论】:

    【解决方案2】:

    我的自定义共享用户界面import {Datepicker} from '@dwp/ui'

     <Datepicker
                fullWidth
                classes={classes}
                format="dd/MM/yyyy"
                minDateMessage=""
                maxDateMessage=""
                value={selectedDate}
                coloricon={$white}
                InputProps={{
                  classes: {
                    underline: classes.underline,
                    disabled: classes.disabled,
                  },
                }}
                onChangeDate={(value) => handleDateChange(value)}
                disabled
              />
    

    来自`@dwp/ui的共享datepicker的来源

    export function Datepicker(props) {
      const {
        minDate = new Date(),
        onChangeDate,
        value,
        classes,
        coloricon,
        InputProps,
        disabled,
      } = props
      const onChange = (payload) => onChangeDate(payload)
    
      return (
        <MuiPickersUtilsProvider utils={DateFnsUtils} locale={localeMap['au']}>
          <KeyboardDatePicker
            variant="inline"
            minDate={minDate}
            format="dd/MM/yyyy"
            margin="normal"
            placeholder="10/10/2018"
            onChange={(payload) => {
              onChange(payload)
            }}
            KeyboardButtonProps={{
              'aria-label': 'change date',
            }}
            value={value || minDate}
            keyboardIcon={
              <A.QueryBuilderIcon
                coloricon={disabled ? `rgba(255, 255, 255, 0.36)` : coloricon}
              />
            }
            className={classes.underline}
            InputProps={InputProps}
            disabled={disabled}
          />
        </MuiPickersUtilsProvider>
      )
    }
    
    A.QueryBuilderIcon = styled(QueryBuilderIcon)`
      color: ${(props) => props.coloricon};
    `
    

    【讨论】:

      【解决方案3】:

      你可以在&lt;KeyboardDatePicker组件中使用keyboardIcon props

      <KeyboardDatePicker
                      margin="normal"
                      id="date-picker-dialog"
                      format="MM/dd/yyyy"
                      value={selectedDate}
                      onChange={handleDateChange}
                      KeyboardButtonProps={{
                          'aria-label': 'change date',
                      }}
                      keyboardIcon={<img src="https://.../calendar.png" alt="calendar" width="33px" height="33px"/>}
                  />
      

      您还可以在此keyboardIcon 属性中使用另一个标签(不仅是&lt;img /&gt;):

      • &lt;svg&gt;
      • &lt;Icon&gt;(来自材质ui)
      • &lt;div&gt;
      • 等等……

      【讨论】:

        【解决方案4】:
        components = {{OpenPickerIcon : AccessAlarmIcon}}
        

        //我在ma​​terial ui datepicker中设置了AccessAlarmIcon,你可以更改设置另一个Icon

        【讨论】:

          猜你喜欢
          • 2018-05-09
          • 2021-08-01
          • 2021-01-27
          • 2018-10-23
          • 1970-01-01
          • 2021-02-24
          • 2021-03-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多