首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何清除MUI DatePicker输入?

如何清除MUI DatePicker输入?
EN

Stack Overflow用户
提问于 2021-11-19 21:29:39
回答 3查看 8.8K关注 0票数 3

我想在DatePicker中添加一个“@mui/lab”按钮(5.0.0-字母55)。

我想做的是:

  • date字段存储在状态中,作为value支柱传递给DatePicker
  • 在需要时将date更改为null,以“清除”值和输入

我观察到的行为:

  • 如果date有效,它将按预期工作,并清除输入。
  • 如果date无效,则清除error,但无效日期仍保留在输入中。

我尝试过的最基本的版本显示了上面的行为,可以看到这里

如果输入一个部分日期,然后单击clear,您可以观察到输入没有被清除。

我倾向于避免涉及更改key的解决方案,因为这会带来其他问题,例如不尊重外部源将date更改为null,以及在清除输入时需要额外的黑客来尊重label转换。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-11-20 12:47:09

我的理论是,在内部,DatePicker只在输入值与最后一个有效值不同时才更新它。下面是错误发生的原因:

  • 当存在有效值(如初始的DatePicker )时,首先成功地重置状态(value=nullinputValue='')。
  • 输入一些无效的日期。现在这个州(value=Invalid DateinputValue='invalid Text')
  • 因为当前的value无效,所以它不计数,DatePicker引用最后一个有效值,即null,然后决定当前值不改变,跳过分配新的输入值(value=nullinputValue='invalid Text')。

我把它归类为MUI中的一个bug,如果您想要修复它,可以在github上创建一个问题。同时,您可以通过使用补丁使用patch-package来修复这个错误。

  • 安装patch-packagenpm i patch-package
  • postinstall中添加package.json脚本
代码语言:javascript
运行
复制
"scripts": {
  "postinstall": "patch-package"
}
  • node_modules\@mui\lab\internal\pickers\hooks\useMaskedInput.js中打开buggy文件,并根据提交来更改它。
  • 运行npx patch-package @mui/lab以创建每次运行npm i @mui/lab后都要应用的修补程序。
  • 重新启动开发服务器。
票数 5
EN

Stack Overflow用户

发布于 2022-02-01 12:19:53

梅DatePicker具有清晰的属性。当设置为true时,它会显示一个清晰的按钮。可以使用clearText属性更改clear按钮的文本。但是,我要指出,它不触发onChange事件,也不存在onClear事件(在撰写本文时)。所以当我使用它时,不可能这样改变状态。但是会触发onAccept事件,如果您传递值参数,它将为null。

代码语言:javascript
运行
复制
<MobileDatePicker
  open
  clearable
  label="some label"
  inputFormat="yyyy-MM-dd"
  value={stateDate}
  onChange={(date) => updateAvailableDate(date)}
  renderInput={(params) => (
    <TextField
      {...params}
    />
  )}
  onClose={() => hideModal()}
  clearText="Clear me"
  onAccept={(value) => handleSave(value)}
/>

请参阅这里的所有api设置。https://mui.com/api/date-picker/

票数 -1
EN

Stack Overflow用户

发布于 2022-04-08 15:10:32

这就是我为使明确的功能发挥作用所做的。我最近找到了这个解决方案所以我可能会在将来改变这个..。但现在没事了。

代码语言:javascript
运行
复制
       <MobileDateTimePicker
                ...
                clearable
                clearText="Clear"
                onChange={(newScheduleDateTime) => {
                  if (newScheduleDateTime) {
                    setScheduleDateTime(newScheduleDateTime);
                  } else {
                    setScheduleDateTime(null);
                  }
                }}
              />
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70041109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档