jmax
@jmax
Frontend-dev

Схема валидации yup для массива name?

Мне с бэка приходит массив с необходимыми name, которые я рендерю в инпуты формы react-hook-form. Не могу настроить схему валидации:
import { object, string, array } from "yup";

export const createValidationSchema = (arr: any) => {
  const validationObject = {};

  arr?.forEach(({name}: { name: string}) => {
    validationObject[name] = string().required("Необходимо заполнить");
  });

  return object().shape({
    editFields: array()
      .of(object().shape(validationObject))
      .required("Необходимо заполнить")
  });
};

const { control, register, handleSubmit, formState: { errors, isValid } } = useForm<Form>({
        // массив documentDetail?.template?.items приходит с бэка
        resolver: yupResolver(createValidationSchema(documentDetail?.template?.items)),
        mode: "onBlur"
});

const { fields, append } = useFieldArray<Form>({
    control,
    name: "editFields",
});

но на выходе errors выдаёт вот это:
628cc2963b9ad940752312.jpeg
Подскажите, что я делаю не так?
  • Вопрос задан
  • 32 просмотра
Решения вопроса 1
jmax
@jmax Автор вопроса
Frontend-dev
Кажется, решил. Оказывается, совсем не обязательно класть этот объект в editFields.
return object().shape(validationObject);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы