Вопрос проверяет умение реализовывать динамические формы, где поля зависят от выбранного значения в select, что часто встречается в сложных UI.
Когда нужно, чтобы форма менялась в зависимости от выбора пользователя, используется подход управляемых компонентов и условного рендеринга. Состояние хранит текущее значение select, а на его основе отображаются соответствующие поля ввода.
Рассмотрим форму, где при выборе 'email' появляется поле для email, а при выборе 'phone' — поле для телефона с маской.
import React, { useState } from 'react';
function DynamicForm() {
const [contactType, setContactType] = useState('email');
const [contactValue, setContactValue] = useState('');
const handleTypeChange = (e) => {
setContactType(e.target.value);
setContactValue(''); // сброс значения при смене типа
};
return (
<form>
<select value={contactType} onChange={handleTypeChange}>
<option value="email">Email</option>
<option value="phone">Phone</option>
</select>
{contactType === 'email' ? (
<input
type="email"
value={contactValue}
onChange={(e) => setContactValue(e.target.value)}
placeholder="Enter email"
/>
) : (
<input
type="tel"
value={contactValue}
onChange={(e) => setContactValue(e.target.value)}
placeholder="Enter phone"
/>
)}
</form>
);
}Такой подход применяется в сложных формах, анкетах, настройках, где набор полей зависит от предыдущего выбора. Он обеспечивает чистоту кода и легкость поддержки.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию