Как сделать поле ввода обязательным на основе элементов в массиве при проверке объекта Yup? - PullRequest
0 голосов
/ 05 июля 2019
import * as Yup from 'yup';

const jobInfoSchema = Yup.object({
    employmentTypeSelectedArray: Yup.array()
        .min(1, 'select employment type')
        .of(
            Yup.object({
                id: Yup.number(),
                name: Yup.string(),
            })
        ),
    salaryExpected: Yup.number().when('employmentTypeSelectedArray', {
        is: employmentTypeSelectedArray => {
            employmentTypeSelectedArray.some(element => {
                return element.name == 'Permanent';
            });
        },
        then: Yup.number()
            .typeError('expected salary must be a number')
            .required('required'),
        otherwise: Yup.number().typeError('expected salary must be a number'),
    }),

});

export default jobInfoSchema;

Я хочу сделать поле salaryExpected обязательным, если EmploymentTypeSelectedArray содержит объект с именем «Постоянный».С событием onclick динамически {"id": 1, "name": "Permanent"} добавляется в EmploymentTypeSelectedArray в Reactionjs, но поле salaryExpected не показывает обязательное при отправке, в то время как оно показывает число typeError при вводе строки.

...