我有一个Redux表单,该表单正在使用material-ui日期选择器保存日期。如果有人没有选择日期,而是仍提交表单,则该日期将另存为1970-01-02。不幸的是,documentation似乎没有包含用于处理该问题的任何道具,而且我无法通过验证来解决-这些字段必须是可选的。
是否可以选择强制在未提供值的情况下不输入Date(0)?还是应该使用其他DatePicker工具?我们正在使用material-ui v.0.19.4。我已经尝试过使用null状态,该状态只会在更改时发生变化,但这并没有帮助。
这就是领域的样子。
<Field
name="endOfPartnership"
type="text"
component={DatePicker}
className={css.fullWidth}
floatingLabelFocusStyle={styles.floatingLabelColor}
underlineFocusStyle={styles.floatingLabelColor}
floatingLabelText={intl.formatMessage(defineMessages.endOfPartnership)}
fullWidth
formatDate={formatDate}
minDate={minDate}
/>
答案 0 :(得分:1)
我发现了行为的定义位置,仅供参考。从他们的源代码。
https://github.com/mui-org/material-ui/blob/v0.x/src/DatePicker/DatePicker.js
有这行。
value={this.state.date ? formatDate(this.state.date)
formatDate
在哪里,
formatDate = (date) => {
if (this.props.locale) {
const DateTimeFormat = this.props.DateTimeFormat || dateTimeFormat;
return new DateTimeFormat(this.props.locale, {
day: 'numeric',
month: 'numeric',
year: 'numeric',
}).format(date);
} else {
return formatIso(date);
}
};
我想这就是为什么日期总是“格式正确”的原因。
答案 1 :(得分:0)
看来,将日期解析为字符串的函数存在问题。
有人在日期转换方面遇到了问题,因此做出了非常丑陋的解决方法。我们切换到moment.js,这使我们可以避免前面的问题,并且可以确定当没有提供输入时它现在可以正常工作=> materialUI datepicker可以正常工作。
谢谢克里斯托弗!