Reactjs 是的+;useFormik-基于某些参数的条件必填字段
我有一个验证架构对象:Reactjs 是的+;useFormik-基于某些参数的条件必填字段,reactjs,formik,yup,Reactjs,Formik,Yup,我有一个验证架构对象: SCHEMA = object().shape({ ... someField: string().required(validation_keys.required), ... }); 我正在我的组件中使用useFormik: const formik = useFormik({ initialValues: values, onSubmit: ..., validationSchema: SCHEMA, }); 我正在寻找一种将参数传递到模
SCHEMA = object().shape({
...
someField: string().required(validation_keys.required),
...
});
我正在我的组件中使用useFormik
:
const formik = useFormik({
initialValues: values,
onSubmit: ...,
validationSchema: SCHEMA,
});
我正在寻找一种将参数传递到模式的方法,以便在参数为true
时需要someField
。。。我阅读了有关上下文的内容,也尝试使用when()
,但这些都不适用于我
我的目标是基于组件属性验证someField
,而不是来自formik的其他字段。类似于下面的示例:
validationSchema={yup.object().shape({
someField: yup
.string()
.when("xxx", {
is: true,
then: yup.string().required("Required"),
otherwise: yup.string(),
})
})
}
xxx
应该被传递到使用useFormik的React组件中的验证模式中您可以这样做
const validationSchema= Yup.object({
custom_field: Yup.string().test(
"match",
"Custom validation enabled",
function () {
if (!shouldFormValidate) return true;
return false;
}
)
});
工作代码沙盒。如果要基于React组件属性验证字段,可以使用: 范例
是否可以在不添加其他for字段的情况下执行此操作?是。您可以使用参数字段而不是附加字段。你能创建一个示例代码段吗?@jake ferguson检查更新的答案和代码沙盒。让我知道它是否回答了你的问题。这是否回答了你的问题?不,这是基于其他字段的条件验证。我想验证一个基于React组件道具的字段,而不是field.added,我想现在已经很清楚了
schema = object({
...,
someField: string(),
...
});
if(validation_keys.required) {
schema.fields.someField.withMutation(schema => {
schema.required();
});
}