我想在DatePicker
中添加一个“@mui/lab
”按钮(5.0.0-字母55)。
我想做的是:
date
字段存储在状态中,作为value
支柱传递给DatePicker
date
更改为null
,以“清除”值和输入我观察到的行为:
date
有效,它将按预期工作,并清除输入。date
无效,则清除error
,但无效日期仍保留在输入中。我尝试过的最基本的版本显示了上面的行为,可以看到这里。
如果输入一个部分日期,然后单击clear
,您可以观察到输入没有被清除。
我倾向于避免涉及更改key
的解决方案,因为这会带来其他问题,例如不尊重外部源将date
更改为null
,以及在清除输入时需要额外的黑客来尊重label
转换。
发布于 2021-11-20 12:47:09
我的理论是,在内部,DatePicker
只在输入值与最后一个有效值不同时才更新它。下面是错误发生的原因:
DatePicker
)时,首先成功地重置状态(value=null
,inputValue=''
)。value=Invalid Date
,inputValue='invalid Text'
)value
无效,所以它不计数,DatePicker
引用最后一个有效值,即null
,然后决定当前值不改变,跳过分配新的输入值(value=null
,inputValue='invalid Text'
)。我把它归类为MUI中的一个bug,如果您想要修复它,可以在github上创建一个问题。同时,您可以通过使用补丁使用patch-package
来修复这个错误。
patch-package
:npm i patch-package
postinstall
中添加package.json
脚本"scripts": {
"postinstall": "patch-package"
}
node_modules\@mui\lab\internal\pickers\hooks\useMaskedInput.js
中打开buggy文件,并根据这提交来更改它。npx patch-package @mui/lab
以创建每次运行npm i @mui/lab
后都要应用的修补程序。发布于 2022-02-01 12:19:53
梅DatePicker具有清晰的属性。当设置为true时,它会显示一个清晰的按钮。可以使用clearText属性更改clear按钮的文本。但是,我要指出,它不触发onChange事件,也不存在onClear事件(在撰写本文时)。所以当我使用它时,不可能这样改变状态。但是会触发onAccept事件,如果您传递值参数,它将为null。
<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/
发布于 2022-04-08 15:10:32
这就是我为使明确的功能发挥作用所做的。我最近找到了这个解决方案所以我可能会在将来改变这个..。但现在没事了。
<MobileDateTimePicker
...
clearable
clearText="Clear"
onChange={(newScheduleDateTime) => {
if (newScheduleDateTime) {
setScheduleDateTime(newScheduleDateTime);
} else {
setScheduleDateTime(null);
}
}}
/>
https://stackoverflow.com/questions/70041109
复制相似问题