如何动态扩展或组成一个Yup模式

时间:2019-04-05 05:48:01

标签: reactjs validation formik yup

说我有一个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 :(得分:0)

我的错误-我需要再次分配schema的cuz链接,方法是再次返回该对象:

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()

请告知是否有更好的方法:)