Не проверять нетронутые поля в Formik и Yup при отправке, если поле не пустое - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть эта схема проверки для формы, созданной с использованием 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()
        })

, и мой компонент формы похож наthis:

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 документы, но не смог найти что-то подходящее для моей проблемы.

Это тот случай, когда вы отправляете форму один раз и редактируете после нее незначительные изменения в некоторых из этих нескольких полей.если есть несколько полей и редактируются только некоторые, я не хочу запускать проверку для всех существующих полей.

Заранее спасибо.

...