我有一个withFormik()
用于我的 React 应用程序中使用的表单的验证模式,这validateJql()
是我的自定义验证函数yup
validationSchema: Yup.object().shape({
rework: Yup.string().required("Rework query is required").validateJql(),
originalEstimate: Yup.string().required("Original Estimate query is required").validateJql()
})
我的表单组件是这样的:
const addSomeForm = (props) => {
const {
values,
touched,
errors,
isSubmitting,
handleChange,
handleSubmit,
} = props;
return (
<form onSubmit={handleSubmit}>
<div className="form-group">
<div>
<label htmlFor="name" className="col-form-label"><b>Rework Query:</b></label>
<textarea id="query.rework" rows="5" type="text" className="form-control" placeholder="Enter JQL with aggregate Function" value={values.query.rework} onChange={handleChange} required />
{errors.query && errors.query.rework && touched.query && <span className="alert label"> <strong>{errors.query.rework}</strong></span>}
</div>
</div>
<div className="form-group">
<div>
<label htmlFor="name" className="col-form-label"><b>Original Estimate:</b></label>
<textarea id="query.originalEstimate" rows="5" type="text" className="form-control" placeholder="Enter JQL with aggregate Function" value={values.query.originalEstimate} onChange={handleChange} required />
{errors.query && errors.query.originalEstimate && touched.query && <span className="alert label"> <strong>{errors.query.originalEstimate}</strong></span>}
</div>
</div>
</form>
)
现在,我想要做的不是在表单提交时运行验证,如果该字段没有被触摸rework
并且originalEstimate
也不是空的。如何使用withFormik
HOC 或Yup
? 我已经部分浏览了Yup
文档和Formik
文档,但找不到适合我的问题的东西。
在提交一次表单并在此之后进行编辑以对其中一些字段进行细微调整后就是这种情况。如果有多个字段并且只编辑了一些字段,我不想对所有存在的字段进行验证。
先感谢您。