да, проверка с несколькими полями

#yup #react-hook-form

#ага #реакция-крючок-форма

Вопрос:

Я хочу проверить поля с помощью yup и react-hook-form . Я хочу убедиться, что хотя бы одно из 2 полей будет содержать какое-то значение. По какой-то причине urls и instructions не определены (см., Где они напечатаны) при проверке. Есть какие-нибудь идеи, почему это происходит?

Когда я отправляю значения формы, они отображаются как:

 { meta,urls: Array(1), meta,instructions: "" }
 

Проверочный код:

 const schema = yup.object({
  processingType: yup.string(),
  meta: yup.object().shape({
    instructions: yup.string()
      .when('urls', {
        is: urls => {
          console.log('HERE', urls)
          return urls[0]?.url === ''
        },
        then: yup.string().required().min(1),
        otherwise: yup.string()
      }),
    urls: yup.array().of(yup.object().shape({ url: yup.string() }))
      .when('instructions', {
        is: instructions => {
          console.log('THERE', instructions);
          return instructions === ''
        },
        then: yup.array().of(yup.object().shape({ url: yup.string() })).required().min(1),
        otherwise: yup.object().shape({ url: yup.string() })
      }),
  }, ['instructions', 'urls'])
});

const defaultValues = {
  processingType: '',
  meta: {
    instructions: '',
    urls: [{ url: '' }],
  }
};