Проверка условия Да - требуется любое одно поле (ошибка: неперехваченная ошибка: зависимость Cycli c, узел был: «b».) - PullRequest
0 голосов
/ 04 августа 2020

В моем приложении я использую проверку Yup. Я столкнулся со сценарием, когда мне нужно хотя бы одно из трех обязательных полей (String). Я пробовал использовать приведенный ниже код, но он выдает Uncaught Error: Cycli c dependency, узел был: «b» .

a: yup.string().when(['b', 'c'], {
 is: (b, c) => !b && !c,
 then: yup.string().required()
}),
b: yup.string().when(['a', 'c'], {
 is: (a, c) => !a && !c,
 then: yup.string().required()
}),
c: yup.string().when(['a', 'b'], {
 is: (a, b) => !a && !b,
 then: yup.string().required()
})
}, [['a', 'b'], ['a', 'c'], ['b','c']])```

Any response or working code would be very helpful. Thanks in advance.

1 Ответ

0 голосов
/ 31 августа 2020

Я обнаружил, что вы можете сделать это с помощью конструкции lazy в Yup.

Ссылка для ленивых: https://github.com/jquense/yup#yuplazyvalue -any - schema-lazy

Создает схему, которая оценивается во время проверки / применения. Полезно для создания рекурсивной схемы, такой как деревья, для полиморфных c полей и массивов.

Пример:

a: yup.lazy(() => yup.string().when(['b', 'c'], {
 is: (b, c) => !b && !c,
 then: yup.string().required()
})),
b: yup.lazy(() => yup.string().when(['a', 'c'], {
 is: (a, c) => !a && !c,
 then: yup.string().required()
})),
c: yup.lazy(() => yup.string().when(['a', 'b'], {
 is: (a, b) => !a && !b,
 then: yup.string().required()
}))
}, [['a', 'b'], ['a', 'c'], ['b','c']])```
...