我有一个电子邮件字段,只有在选择复选框(布尔值为true
)时才会显示。当表单被提交时,我只想要这个字段在复选框被选中时才是必填项(布尔值为true)。
到目前为止,我尝试过以下方法:
const validationSchema = yup.object().shape({
email: yup
.string()
.email()
.label('Email')
.when('showEmail', {
is: true,
then: yup.string().required('Must enter email address'),
}),
})
我尝试了几个其他的变体,但是Formik和Yup会出错:
Uncaught (in promise) TypeError: Cannot read property 'length' of undefined
at yupToFormErrors (formik.es6.js:6198)
at formik.es6.js:5933
at <anonymous>
yupToFormErrors @ formik.es6.js:6198
而且我也从 Yup 得到了验证错误。我做错了什么?
initialValues
对象时,同时将enableReinitialize
设置为true
也非常重要。 - Klem Lloyd Mwenya