Как проверить, когда три флажка отмечены в YUP? - PullRequest
0 голосов
/ 25 февраля 2019

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

[*] 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 Ответ

0 голосов
/ 26 февраля 2019

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

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

Я проверил его в codeandbox , и, похоже, он работает нормально.

...