reactjs - Yup 模式可以报告违反规则的组合吗?
问题描述
我正在使用Formik构建一个带有email
和password
输入的简单注册表单。如果他们的密码符合某些标准规则集,我希望能够实时显示用户,例如
- 这是必需的
- 最小字符长度
- 必须包含至少 1 个数字
- 必须包含至少 1 个特殊字符
有点像这个例子:
但是,通过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的声明性,并希望继续使用它。是否可以制定一个 YupSchema
来报告所有错误组合,如这个自定义validate
函数?
解决方案
推荐阅读
- c# - System.Web.HttpCompileException:类型“<>”在未引用的程序集中定义
- bash - 在 oneliner 的后台运行命令
- apache - drupal 7中的Apachesolr子查询错误
- java - 如何使用蓝牙从设备接收一些字节?
- vba - 如何循环这个索引匹配?
- xpath - 如何通过 xpath 排除某些关键字和 ID
- python - 从 cloud-ml 中存在的项目中的多个模型获取预测的单个查询
- python - 后端通过 Flask 中的 Ajax 从前端接收 JSON 后渲染模板
- angularjs - ng-repeat 在 angularjs 中不起作用
- python-3.x - python方法调用末尾的['x'] ['y']表示什么?['x'] ['y'] 在函数调用结束时提到