Да, проверка, чтобы убедиться, что массив содержит хотя бы один элемент

У меня есть такой массив

{
    array: ["1", "4"]
}

но я хочу добавить к нему проверку да - если массив пуст - так что хотя бы один элемент находится в массиве

Я пробовал что-то подобное - но не работает

myArray: yup.array().min(1). required("at least one item needs to be here")

всегда ли пустые массивы правдивы? Ага: проверка массива строк, которые могут быть пустыми

а эта песочница вроде работает? https://codesandbox.io/s/serene-khorana-3pjmq?file=/src/index.js


https://codesandbox.io/s/lively-rgb-b2sct

вот работа formik formframe - с флажками - показана - но когда флажки не выбраны, то есть значение является пустым массивом - ошибка должна отображаться - но это не так?


person The Old County    schedule 27.05.2021    source источник


Ответы (1)


То, что вы сделали, уже было правильным и ожидаемым. Я не уверен, в чем ваше замешательство.

Если код:

import "./styles.css";
//import { object, array } from "yup";
import * as yup from "yup";

const mySchema = yup.object({
  myArray: yup.array().min(1, "at least 1").required("required")
});

console.log("[]", mySchema.isValidSync({ myArray: [] }));

console.log(
  '["John"]',
  mySchema.isValidSync({
    myArray: ["John"]
  })
);

console.log(
  '["John", "Doe"]',
  mySchema.isValidSync({
    myArray: ["John", "Doe"]
  })
);

Он возвращает:


[] false
["John"] true
["John", "Doe"] true

Если я изменил строку на myArray: yup.array().min(2, "at least 2").required("required")

Затем возвращается:

[] false
["John"] false
["John", "Doe"] true
person Robert Tirta    schedule 28.05.2021
comment
Он не работает - в моей кодовой базе - я создаю структуру формы - с formik - но это, похоже, не работает с пустым значением массива - это похоже на то, что он не показывает ошибку - person The Old County; 28.05.2021
comment
codesandbox.io/s/lively-rgb-b2sct - поэтому, когда флажки не отображаются не проверял хотя бы ОДИН - ошибка должна отображаться - но это не так. - person The Old County; 28.05.2021
comment
codeandbox.io/s/crazy-stonebraker-q5zd8 - здесь присутствует ошибка I пытаюсь решить - person The Old County; 30.05.2021
comment
Что-то не так с вашим <FieldHandler/> способом создания схемы флажка. См. здесь в моем console.log между validationSchema в формике и значениями, которые генерируются в формике. Попробуйте увидеть консоль, затем измените значение флажка, вы увидите, что вы сохраняете значение всего флажка только в checkbox_option1 ключе. - person Robert Tirta; 31.05.2021
comment
Затем следуйте за вашей второй песочницей, если я поставлю правильную проверку, как показано здесь. Formik не отправляет, если не отмечен хотя бы один флажок (см. console.log, идет ли он на отправку или нет). Таким образом, да, работает так, как ожидалось. - person Robert Tirta; 31.05.2021