#javascript #reactjs #typescript #react-hook-form #yup
Вопрос:
У меня есть дополнительные поля, которые отображаются только в том случае, если установлен флажок (логическое значение равно true). Эти дополнительные поля также нуждаются в проверке, но с использованием .когда() метод, похоже, не реагирует на то, что флажок является истинным в качестве условия. Часть проверки моего кода выглядит так:
const schema = useMemo(
() =>
yup
.object()
.shape({
type: yup
.string()
.label(translate('Forms.EmailForm.type.label'))
.required(),
person: yup
.object()
.shape({
firstName: yup
.string()
.required()
.trim()
.min(1)
.max(255)
.label(
translate(
'Forms.EmailForm.firstName.label',
),
),
hasAddress: yup.boolean(),
address: yup.boolean().when('hasAddress', {
is: true,
then: yup
.object()
.shape({
firstLine: yup
.string()
.required()
.max(255)
.label(
translate(
'Forms.EmailForm.address.firstLine.label',
),
),
secondLine: yup
.string()
.max(255)
.label(
translate(
'Forms.EmailForm.address.secondLine.label',
),
),
}),
}),
}),
}),
[],
);
const form = useForm<EmailForm>({
resolver: yupResolver(schema),
defaultValues: {
type: 'PERSON',
},
});
Комментарии:
1. что такое метод .when ()? Я не могу найти его в вашем фрагменте кода.
2. @novonimo та же строка, в которой есть: адрес: yup.boolean().when(‘hasAddress’, {