我最近已将Formik从v1
升级到v2
。我使用yup进行模式验证来验证值,在一个案例中,我传递了一个函数来验证,如下所示:
const formikRef = useRef()
const SomeSchema = yup
.object()
.shape({
fieldA: yup.string(),
fieldB: yup
.number()
.test(
'do-validation for fieldB',
'error message for fieldB if validation fails',
(fieldB) => {
// fieldB here is the current value of field fieldB
// here I want to access the value of fieldA
// previously, I was using formikRef.current.state.values
})
})
<Formik
// other props
validationSchema={SomeSchema}
ref={formikRef}
>
我尝试传递innerRef
,而不是文档中提到的ref
。但是,我的字段是自定义字段,所以这可能就是它不起作用的原因。我不确定如何获取表单的所有当前值?
您可以使用this.parent
fieldB: yup
.number()
.test(
'do-validation for fieldB',
'error message for fieldB if validation fails',
function(fieldB) => {
const {fieldA} = this.parent;
console.log(fieldA);
}
)
或者对于箭头功能
fieldB: yup
.number()
.test(
'do-validation for fieldB',
'error message for fieldB if validation fails',
(fieldB, context) => {
const {fieldA} = context.parent;
console.log(fieldA);
}
)