Да, не проверяется, когда выполняются условия

#javascript #reactjs #typescript #react-hook-form #yup

Вопрос:

У меня есть дополнительные поля, которые отображаются только в том случае, если установлен флажок (логическое значение равно true). Эти дополнительные поля также нуждаются в проверке, но с использованием .когда() метод, похоже, не реагирует на то, что флажок является истинным в качестве условия. Часть проверки моего кода выглядит так:

   const schema = useMemo(
    () =>
      yup
        .object()
        .shape({
          type: yup
            .string()
            .label(translate('Forms.EmailForm.type.label'))
            .required(),
          person: yup
            .object()
            .shape({
              firstName: yup
                .string()
                .required()
                .trim()
                .min(1)
                .max(255)
                .label(
                  translate(
                    'Forms.EmailForm.firstName.label',
                  ),
                ),
              hasAddress: yup.boolean(),
              address: yup.boolean().when('hasAddress', {
                is: true,
                then: yup
                  .object()
                  .shape({
                    firstLine: yup
                      .string()
                      .required()
                      .max(255)
                      .label(
                        translate(
                          'Forms.EmailForm.address.firstLine.label',
                        ),
                      ),
                    secondLine: yup
                      .string()
                      .max(255)
                      .label(
                        translate(
                          'Forms.EmailForm.address.secondLine.label',
                        ),
                      ),
                  }),
              }),
            }),
        }),
    [],
  );

  const form = useForm<EmailForm>({
    resolver: yupResolver(schema),
    defaultValues: {
      type: 'PERSON',
    },
  });

 

Комментарии:

1. что такое метод .when ()? Я не могу найти его в вашем фрагменте кода.

2. @novonimo та же строка, в которой есть: адрес: yup.boolean().when(‘hasAddress’, {