Приходилось ли делать сложные динамичные формы, зависящие от действий пользователя
Что проверяют
Делали ли вы форму сложнее пары полей и понимаете ли, из чего складывается её цена: перерисовки, зависимая валидация, поля, которые появляются и исчезают. Вопрос звучит как разговор про опыт, но ответ быстро уходит в архитектуру состояния.
Как отвечать
Сначала назовите подход к состоянию. Контролируемые поля через состояние родителя удобны, пока полей мало: каждое нажатие клавиши перерисовывает всё дерево формы. Поэтому на больших формах берут библиотеку, которая держит значения вне React и подписывает на изменение только то, что действительно зависит от поля, например React Hook Form, а схему валидации описывают отдельно, через zod или yup.
Дальше про зависимости. Условное поле это не только {visible && <Field/>}: у скрытого поля остаются значение и правило проверки, и надо решить, что с ними происходит. Обычно скрытое поле снимают с регистрации, иначе форма не отправляется из-за ошибки в невидимом месте, а на сервер уезжает лишнее. Зависимые правила описываются в схеме, а не россыпью условий по компонентам.
Стоит упомянуть повторяющиеся блоки: массив полей с ключом по идентификатору строки, а не по её номеру, иначе удаление из середины перемешает уже введённые значения.
И про пользователя: ошибки показываются после ухода с поля, а не на первом символе, при отправке фокус уезжает на первое проблемное поле, у каждого поля есть подпись и связь с текстом ошибки для скринридера.
Где спотыкаются
Держат каждое поле в состоянии родителя или в глобальном сторе. На форме из десятков полей ввод начинает отставать от клавиатуры, и лечится это уже переписыванием.
Второе: скрытое поле остаётся в значениях и в схеме. Кнопка нажимается, ничего не происходит, ошибка висит на поле, которого на экране нет. Так рождается классическая жалоба «форма не отправляется».
Третье: верят клиентской валидации. Она про удобство, а не про безопасность: запрос легко повторить из консоли в обход формы, поэтому те же правила обязаны стоять и на сервере.