Может ли схема Yup сообщать о сочетаниях нарушений правил? - PullRequest
1 голос
/ 29 января 2020

Я использую Formik для создания простой формы регистрации с email и password входами. Я хотел бы иметь возможность отображать пользователя в режиме реального времени, если его пароль соответствует некоторому стандартному набору правил, например

  • Требуется
  • Минимальная длина символа
  • Должен содержать не менее 1 ди git
  • Должен содержать не менее 1 специального символа

Kindof, как в этом примере:

enter image description here

Однако проверка через Yup и, действительно, все документы проверки Formik, кажется, заполняют объект errors prop , который показывает только одну ошибку проверки поле, а не сообщать, какая комбинация в настоящее время проходит / не проходит.

Например, объект errors {email: "Required", password: "Needs to be at least X characters"} может ссылаться на короткий пароль "abc", но также без цифр или специальных символов.

Хотя это возможно! Мы можем отправить <Formik> пользовательскую validate функцию, которая заполняет errors реквизит всеми правилами:

<Formik
  initialValues={initialValues}
  onSubmit={handleSubmit}
  validate={values => ({
    email: {
      required: ...,
      isEmail: ...
    },
    password: {
      required: ...,
      meetsMinLength: ...,
      containsDigit: ...,
      containsSpecial: ..., 
    }
  })}
  validateOnChange={true}
> 
  {formik => (
    ... render form, inputs, errors, etc ...
    ... "formik.errors" looks like "{email: {...}, password: {...}}" ...
  )}
</Formik>

Это работает, однако Мне действительно нравится, насколько декларативным является Yup , и я хотел бы продолжать его использовать. Можно ли сформулировать Yup Schema, который будет сообщать обо всех комбинациях ошибок, как эта пользовательская функция validate?

...