Проверяет умение проектировать реактивные зависимости между полями формы, чтобы скрывать, блокировать и пересчитывать значения при изменении других полей.
Динамическая форма — это форма, структура и поведение которой зависят от данных, введённых пользователем. Например, при выборе типа лица "Юридическое" появляется поле "Название компании", а поле "Паспорт" скрывается. Такие связи удобно описывать декларативно: каждое поле знает, от каких полей оно зависит и как реагирует на их значения.
const fields = [
{ name: 'type', type: 'select', options: ['person', 'company'] },
{ name: 'companyName', type: 'text',
visible: (v) => v.type === 'company',
required: (v) => v.type === 'company' },
{ name: 'passport', type: 'text',
visible: (v) => v.type === 'person',
disabled: (v) => v.type === 'company' },
{ name: 'vat', type: 'text',
visible: (v) => v.type === 'company',
value: (v) => v.type === 'company' ? v.inn : '' }
];
function resolveState(fields, values) {
return fields.map(f => ({
...f,
visible: f.visible ? f.visible(values) : true,
disabled: f.disabled ? f.disabled(values) : false,
required: f.required ? f.required(values) : false,
value: f.value ? f.value(values) : values[f.name]
}));
}В React удобно использовать react-hook-form с watch и useMemo, в Angular — реактивные формы с valueChanges и combineLatest, во Vue — computed. Главное — держать логику зависимостей в одном месте, а не в разрозненных обработчиках.
Итог: декларативные зависимости через функции от общего состояния формы делают поведение предсказуемым, упрощают тестирование и позволяют добавлять новые поля без переписывания логики. Применяйте этот подход в любых формах, где поля влияют друг на друга.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию