是的条件验证不起作用

问题描述 投票:0回答:0

给出一个是的模式

const validationSchemas = Yup.object().shape({
mobileLast4Enabled: Yup.array(), //checkbox
mobileLast4: Yup.string() //textbox
    .when('mobileLast4Enabled', {
        is: ['on'],
        then: schema => schema.required(requiredText).min(4, '4 numbers required').max(4),
        otherwise: schema => schema.notRequired()
    }),
customQuestion: Yup.string().required(requiredText),
});

当我这样做时

validationSchemas.fields.mobileLast4.describe()
我会返回一个具有字段
tests
的对象,该字段是一个按预期描述模式规则的数组。这在
customQuestion
的情况下工作得很好,但是当我使用
.when
时,例如在
mobileLast4
的情况下,
tests
属性是一个空数组。我已经尝试了所有可能的排列,并且根据我看过的其他问题,我的架构似乎是正确的。

const initialValues = {
mobileLast4: '',
mobileLast4Enabled: [],
customQuestion: '',
};

<Formik validationSchema={validationSchemas} initialValues={initialValues} onSubmit={() => { }}> ...

此外,使用 TypeScript FWIW。

我做错了什么?

reactjs formik yup
© www.soinside.com 2019 - 2024. All rights reserved.