如何根据反应状态值有条件地验证Yup



我有一个名为professional的状态,我想使用Yup有条件地验证表单。我知道我们可以根据另一个字段进行验证。但在这种情况下,我要检查反应状态的值。profession状态将存储职业的类型,在Yup模式中,我将检查职业的值,如果是Student,我想进行一些验证。

const [profession, setProfession] = useState(""); 
const SignupSchema2 = Yup.object().shape({
universityname: Yup.string().when("profession", {
is: "Student",
then: Yup.string().required("Required"),
})
});

解决方案是创建一个包含表单状态和专业字符串的对象,并基于该对象进行验证

const [profession, setProfession] = useState("");
const [formValue, setFormValue] = useState({});
const SignupSchema2 = Yup.object().shape({
profession: Yup.string(),
form: {
universityname: Yup.string().when("profession", {
is: "Student",
then: Yup.string().required("Required"),
})
}
});
// when you want to validate
SignupSchema2.validate({ profession, form: formValue });

最新更新