Как динамически расширять или составлять схему Yup - PullRequest
1 голос
/ 05 апреля 2019

Скажем, у меня есть Yup.string() для начала.

Затем, в какой-то момент, как в цикле, я хочу добавить к нему required правило, эффективно:

Yup.string().required('This field is required').

И, возможно, затем добавить немного.email проверьте тоже.

Я пробовал этот способ, но, похоже, не работает:

function validationSchemaConstructor(question) {
  const schema = Yup.string();

  question.validation_rules.forEach(rule => {
    if ("is_required" in rule) {
      schema.required("Hey man nice shot");
    }
  });

  return schema;
}

1 Ответ

0 голосов
/ 05 апреля 2019

Ах, моя ошибка - мне нужно назначить schema снова, потому что цепочка в общем случае работает, возвращая объект снова:

function validationSchemaConstructor(question) {
  let schema = Yup.string();

  question.validation_rules.forEach(rule => {
    if ("is_required" in rule) {
      schema = schema.required("Hey man nice shot");  // mistake here!
    }
  });

  // un-comment to test dynamically adding additional rule
  // schema = schema.email("email plesss");

  return schema;
}

Хотя не уверен, должен ли я где-то использовать clone().

Пожалуйста, посоветуйте, если есть лучший способ:)

...