Проверка Formik не срабатывает при изменении значения Material-UI Switch Component - PullRequest
0 голосов
/ 24 февраля 2020

Я использую Material-UI, Formik и Yup для создания формы. Проверка для одного из полей (Credential) зависит от коммутатора. Проблема в том, что когда я go из Вкл. В Выкл., Проверка происходит сразу, но когда я go из Вкл. Вкл., Я должен нажать на другой компонент (например, TextBox), чтобы запустить проверку и сделать formik. IsValid = правда.

Объект formik:

    const formik = useFormik({
        initialValues: formValues,
        validationSchema: validationSchema,
        onSubmit: () => { },
        initialTouched: initialTouched,
        validateOnMount: true
    });

Это проверка схемы:

const validationSchema = Yup.object({
    credential: Yup.object<Credential>().nullable()
        .when('roleBasedAccess', {
            is: false,
            then: Yup.object<Credential>().nullable().required('Credential is required')
    }),
     name: Yup.string()
        .max(1000, 'Name must contain at most 1000 characters')
        .trim()
        .when('connectionType', {
            is: ConnectionType.S3,
            then: Yup.string()
                .trim()
                .required('Name is required')
        })
});

Это компонент коммутатора:

    <Switch
     checked={formik.values.roleBasedAccess}
     onChange={handleRoleBasedChange}
     color="primary"
     value="roleBasedAccess"
     onBlur={() => { formik.validateForm() }}
    />

Включите ChangeHandler:

    const handleRoleBasedChange = (event: any) => {
        formik.setFieldValue('roleBasedAccess', !formik.values.roleBasedAccess);
    };

Это сводит меня с ума. Есть предложения?

...