readOnly 未在 react js 中申请材料 ui 的 KeyboardDatePicker 的输入字段

Posted

技术标签:

【中文标题】readOnly 未在 react js 中申请材料 ui 的 KeyboardDatePicker 的输入字段【英文标题】:readOnly is not applying for input field of KeyboardDatePicker of material ui in react js 【发布时间】:2020-01-25 15:31:24 【问题描述】:

KeyboardDatePicker 不支持其输入字段的 readOnly 属性

我尝试了 API 文档中已经提到的 readOnly 属性,但没有成功。它正在为父容器应用只读,而不是在 KeyboardDatePicker 中的输入字段。

<KeyboardDatePicker
    margin="normal"
    id="mui-pickers-date"
    className = "dialog-calendar"
    value=selectedDate
    shouldDisableDate = handleDisableDate
    minDate = startDate
    maxDate = endDate
    minDateMessage = ''
    onChange=handleDateChange
    format = "MM/dd/yyyy"
    disablePast = true
    disabled = isDisabled
    allowKeyboardControl = false
    readOnly = true
    autoFill = false
    KeyboardButtonProps=
         'aria-label': 'change date',
    

【问题讨论】:

【参考方案1】:

这是我尝试设置只读的方式。

<KeyboardDatePicker
  ...
  InputProps= readOnly: true 

/>

【讨论】:

这对我来说非常有效,就像一个“禁用”道具,但不影响样式。谢谢!【参考方案2】:

您只需要覆盖 TextFieldComponent`。

这是工作代码:-

import React from "react";
import ReactDOM from "react-dom";
import TextField from '@material-ui/core/TextField';
import  KeyboardDatePicker, MuiPickersUtilsProvider,  from "@material-ui/pickers";
import DateFnsUtils from '@date-io/date-fns';

const TextFieldComponent = (props) => 
  return <TextField ...props disabled=true />

function App() 
  const [selectedDate, setSelectedDate] = React.useState(
    new Date("2014-08-18T21:11:54")
  );
  const handleDateChange = date => 
    setSelectedDate(date);
  ;
  return (
    <MuiPickersUtilsProvider utils=DateFnsUtils>
      <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"
        
        TextFieldComponent=TextFieldComponent
      />
    </MuiPickersUtilsProvider>
  );


const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

【讨论】:

他的作品,但它对用户界面的影响很大,我的意思是一切都变灰了。有没有办法以某种方式禁用输入字段? @Aldor 可以使用 InputProps InputProps= classes: disabled: classes.disabledDatePicker 设置日期选择器的禁用输入的颜色,其中类在 const useStyles = makeStyles 中定义((theme: Theme) => ( root: display: 'flex', flexWrap: 'wrap', , disabledDatePicker: color: '#800080' ));

以上是关于readOnly 未在 react js 中申请材料 ui 的 KeyboardDatePicker 的输入字段的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮后,Bootstrap5 模态未在 React.js 中显示

TypeScript 的 `readonly` 可以完全替代 Immutable.js 吗?

文本字段更改的值未在 OnSubmit 中更新 - React-Hook-Form 和 React Js

React JS 视图未在 setState() 上重新渲染

ReferenceError:FlatListItemSeparator 未在 React Native 中定义

three.js OBJLoader 未在反应中加载