我有兩個選項卡,自動和手動。
當我將選項卡切換到手動時,它應該只驗證tracking_number. 如果切換到“自動”,它應該驗證recipient_name.
const validationschema= yup.object().shape({
tab: yup.string().oneOf([
"auto",
"manual",
])
.required(),
tracking_number: yup.string().when("tab", {
is: "manual",
then: yup.string().required()
}),
recipient_name: yup.string().when("tab", {
is: "auto",
then: yup.string().required()
})
})
但是這段代碼不起作用,它不會顯示任何錯誤。我確實初始化了initialValue。
<Formik
initialValues={{
tab: "auto",
tracking_number: "",
recipient_name: contact_name || "",
}}
validationSchema={validationschema}
onSubmit={handleOnChange}
>
有任何想法嗎?
uj5u.com熱心網友回復:
最終使用if else。
const validationSchema = (tab) => {
let shape;
if (tab === "auto") {
shape = {
recipient_name: yup.string().required(),
}
} else if (tab === "manual") {
shape = {
tracking_number: yup.string().required(),
}
}
const schema = yup.object().shape(shape);
return schema;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/491526.html
