Я использую реагировать с Formik для моего приложения.Это моя форма:
return <Formik initialValues={initialValues}
onSubmit={this.handleSubmit}
render={
(props: FormikProps<Spec>) => (
<>
<div className="col-md-6">
.....
</div>
</>
)
}
validationSchema={Schema}
/>;
Одно из полей формы disableOn
имеет тип Date
, и initialValues
устанавливается следующим образом:
const initialValues: Spec = {
.
.
disableOn: new Date(),
.
.
};
Форма отображаетзначение как Wed Feb 13 2019 13:29:28 GMT+0530 (India Standard Time)
.Это все еще хорошо, если форма проверяется правильно перед отправкой.Но при нажатии кнопки отправки форма отправляется без проверки / ошибки проверки.Моя схема использует моменты для проверки даты.Моя схема -
export const Schema = object().shape({
.
.
disableOn: date()
.required(ErrorMessages.isRequired)
.format("YYYY-MM-DD", ErrorMessages.invalidDate)
.typeError(ErrorMessages.invalidDate)
.min(new Date(), "Date should be between TOMORROW and 9999-01-01")
.max(new Date("9999-01-01"), "Date should be between TOMORROW and 9999-01-01")
,
});
// See https://github.com/jquense/yup/issues/312
// tslint:disable-next-line:space-before-function-paren
yup.addMethod<DateSchema>(yup.date, "format", function (format: string, message: string) {
return this.test({
exclusive: true,
message,
name: "format",
params: {
format,
},
test: function test() {
const validateOptions: ValidateOptions = this.options;
const parsed = moment(validateOptions.originalValue, format, true);
return parsed.isValid();
},
});
});
Пожалуйста, предложите, как мне обработать мой initialValues
, чтобы он был проверен перед отправкой.