Как проверить, когда три флажка отмечены в YUP?

У меня есть три флажка:

[*] option one
[*] option two
[*] option three

Действительное состояние только тогда, когда все три проверены. Все остальные состояния недопустимы и должны отображать сообщение об ошибке.

Как это реализовать с помощью yup?

Моя текущая реализация, которая не работает. Проверяется только один флажок, но не все.

yup.object().shape({
  registerTerms: yup.boolean().oneOf([true], 'Must Accept Terms of Service'),
  registerCookie: yup.boolean().oneOf([true], 'Must Accept Cookie Policy'),
  registerPrivacy: yup.boolean().oneOf([true], 'Must Accept Privacy Policy'),
}),

1 ответ

Ваше определение схемы выглядит правильно.

import * as yup from "yup";

const schema = yup.object().shape({
  registerTerms: yup.boolean().oneOf([true], "Must Accept Terms of Service"),
  registerCookie: yup.boolean().oneOf([true], "Must Accept Cookie Policy"),
  registerPrivacy: yup.boolean().oneOf([true], "Must Accept Privacy Policy")
});

const validInputObj = {
  registerTerms: true,
  registerCookie: true,
  registerPrivacy: true
};

const invalidInputObj = {
  registerTerms: true,
  registerCookie: true,
  registerPrivacy: false
};

schema.isValid(validInputObj).then(isValid => console.log(isValid));   // true
schema.isValid(invalidInputObj).then(isValid => console.log(isValid)); // false

Я проверил это в codesandbox, и, кажется, работает нормально.

Другие вопросы по тегам