У меня есть эта схема проверки для формы, созданной с использованием 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
docs и Formik
docs, но не смог найти что-то подходящее для моей проблемы.
Это происходит после однократной отправки формы и последующего редактирования для незначительных изменений в некоторых из этих нескольких полей. если имеется несколько полей и редактируются только некоторые, я не хочу запускать проверку для всех существующих полей.
Заранее спасибо.