material-ui日期选择器在Redux表单中将空值保存为Date(0)

时间:2018-07-03 09:29:03

标签: reactjs material-ui redux-form

我有一个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}
      />

2 个答案:

答案 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可以正常工作。

谢谢克里斯托弗!