Subjects

All subjects Django Java Python React Spring Boot JavaScript PHP
Sign Up Free
Question 10 of 10 · React Basics and JSX
Interview question

How do you handle forms and events in React? React में forms और events कैसे handle करते हैं?

Answer
// Controlled component (form input with state)
function LoginForm() {
    const [email, setEmail] = useState('');
    const [password, setPassword] = useState('');
    
    const handleEmailChange = (e) => {
        setEmail(e.target.value);
    }
    
    const handlePasswordChange = (e) => {
        setPassword(e.target.value);
    }
    
    const handleSubmit = (e) => {
        e.preventDefault();
        console.log('Email:', email, 'Password:', password);
    }
    
    return (
        <form onSubmit={handleSubmit}>
            <input type='email' value={email} onChange={handleEmailChange} />
            <input type='password' value={password} onChange={handlePasswordChange} />
            <button type='submit'>Login</button>
        </form>
    );
}

// Simplified with single handler
function Form() {
    const [formData, setFormData] = useState({
        name: '',
        email: '',
        message: ''
    });
    
    const handleChange = (e) => {
        const { name, value } = e.target;
        setFormData(prev => ({
            ...prev,
            [name]: value
        }));
    }
    
    const handleSubmit = (e) => {
        e.preventDefault();
        console.log('Form data:', formData);
    }
    
    return (
        <form onSubmit={handleSubmit}>
            <input name='name' value={formData.name} onChange={handleChange} />
            <input name='email' value={formData.email} onChange={handleChange} />
            <textarea name='message' value={formData.message} onChange={handleChange} />
            <button type='submit'>Submit</button>
        </form>
    );
}

// Event handling
function ClickDemo() {
    const handleClick = () => alert('Button clicked!');
    
    return (
        <div>
            <button onClick={handleClick}>Click me</button>
            <button onClick={() => console.log('Clicked')}>Arrow function</button>
            <input onChange={(e) => console.log(e.target.value)} />
        </div>
    );
}

// Select and checkbox
function SelectDemo() {
    const [selected, setSelected] = useState('option1');
    const [checked, setChecked] = useState(false);
    
    return (
        <div>
            <select value={selected} onChange={(e) => setSelected(e.target.value)}>
                <option value='option1'>Option 1</option>
                <option value='option2'>Option 2</option>
            </select>
            
            <input 
                type='checkbox' 
                checked={checked} 
                onChange={(e) => setChecked(e.target.checked)} 
            />
        </div>
    );
}

// Uncontrolled component (using ref)
import { useRef } from 'react';

function UncontrolledForm() {
    const inputRef = useRef(null);
    
    const handleSubmit = (e) => {
        e.preventDefault();
        console.log('Input value:', inputRef.current.value);
    }
    
    return (
        <form onSubmit={handleSubmit}>
            <input ref={inputRef} />
            <button type='submit'>Submit</button>
        </form>
    );
}

// Common events
function EventDemo() {
    return (
        <div>
            <input onFocus={() => console.log('Focus')} />
            <input onBlur={() => console.log('Blur')} />
            <input onKeyDown={(e) => console.log(e.key)} />
            <input onKeyUp={() => console.log('Key up')} />
            <div onMouseEnter={() => console.log('Mouse enter')} />
            <div onMouseLeave={() => console.log('Mouse leave')} />
        </div>
    );
}
Controlled component (form with state):
const [input, setInput] = useState('');
<input value={input} onChange={(e) => setInput(e.target.value)} />

Form handling:
const handleSubmit = (e) => {
    e.preventDefault();  // Default submission prevent करो
};

Multiple fields:
const handleChange = (e) => {
    setFormData({
        ...formData,
        [e.target.name]: e.target.value
    });
};

Common events:
onChange - Input change
onSubmit - Form submit
onFocus - Input focus
onBlur - Input blur
onKeyDown/onKeyUp - Keyboard events
onClick - Click event

Was this answer clear?