简体   繁体   English

"我的问题是关于 material-ui 4,material-ui\/pickers compaiing 的不存在的“mask”属性"

[英]My question is about material-ui 4, material-ui/pickers compaining of inexistent "mask" property

Upgraded a reactjs project using Material-UI (mui) from v3 to v4 and following the recommended migration guide.使用 Material-UI (mui) 将 reactjs 项目从 v3 升级到 v4,并遵循推荐的迁移指南。 As part of that replaced material-ui-pickers 2.2.1 to @material-ui\/pickers.作为将 material-ui-pickers 2.2.1 替换为 @material-ui\/pickers 的一部分。

DatePicker components now complain of inexistent "mask" property which used to work fine on mui3. DatePicker 组件现在抱怨过去在 mui3 上正常工作的“掩码”属性不存在。

Migration guide nothing mentions about Pickers.迁移指南没有提到 Pickers。 So I wonder.所以我想知道。 For now I rolled back to using mui 3.9 and material-ui-pickers 2.2.1.现在我回滚到使用 mui 3.9 和 material-ui-pickers 2.2.1。

import { DatePicker, DateTimePicker } from '@material-ui/pickers';

// later on...

return (
    <DatePicker
      name={name}
      value={value}
      clearable
      autoOk
      onChange={handleChange}
      format="DD/MM/YYYY"
      placeholder="___/___/______"
      mask={masked(value)}         // <=== The mask property
      {...other}
    />
  );

The And now no more need in mask prop section in the Upgrading to v3 page says:升级到 v3 页面中的现在不再需要掩码道具部分说:

Mask will be generated and applied automatically from the format passed.将根据传递的格式自动生成和应用掩码。

And if you look at the DatePicker API you'll find that there is no mask property, so you must use the format property instead or you can use KeyboardDatePicker which has a mask property that can be used to override generate from format.如果您查看DatePicker API,您会发现没有mask属性,因此您必须改用format属性,或者您可以使用具有mask属性的KeyboardDatePicker ,该属性可用于覆盖从格式生成。

In case of a custom date format , you should update also the mask to match the same date format.如果是自定义日期格式,您还应该更新掩码以匹配相同的日期格式。

Example:例子:

 <MuiDateTimePicker
   inputFormat="DD/MM/yyyy HH:mm:ss"
   mask={"__/__/____ __:__:__"}   
   />

for those who just dont want to use the mask, to remove the warnings (caused a performance issue in my case), just pass an empty string mask="", and use the 'locale' prop in LocalizationProvider to set the lang-standard mask.对于那些不想使用掩码的人,要删除警告(在我的情况下导致性能问题),只需传递一个空字符串 mask="",并使用 LocalizationProvider 中的 'locale' 属性来设置语言标准面具。

<LocalizationProvider dateAdapter={AdapterDateFns} locale={"en"}>
  <DateTimePicker
    mask=""
    renderInput={(props) => {return (<TextField {...props} />)}}
    label="date-time"
    value={this.state.date}
    onChange={(newValue) => {
      this.setDateTime(newValue);
    }}
  />
</LocalizationProvider>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM