reactjs - 如何动态扩展或组合 Yup 模式

标签 reactjs validation formik yup

假设我有一个 Yup.string() 开始。

然后,在某个时刻,就像在循环中一样,我想有效地向其添加 required 规则:

Yup.string().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;
}

最佳答案

啊,我的错误 - 我需要再次分配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()

如果有更好的方法请指教:)

关于reactjs - 如何动态扩展或组合 Yup 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55528929/

相关文章:

java - 如何验证 PAN 卡?

javascript - 从父组件访问子组件的 FORMIK 表单字段值 - React JS

javascript - 原生基础输入的 Formik 验证

javascript - 从 Material 表中的 React 状态动态查找

javascript - 摆脱本地主机 :3000 URLs for ReactAsync

javascript - 更改div react 的onClick路线

javascript - ReactJs Promise + Ajax 返回值

validation - 验证失败后输入值未清除

javascript - 输入类型日期验证 18 岁以下

reactjs - 使用 formik 进行 react-bootstrap-typeahead 重置