如何在Formik中获取架构验证中的当前表单值?(可能使用参考)



我最近已将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);
}
)

最新更新