Loading...
Loading...

React Forms

Handling forms in React involves controlling the form elements' state and responding to user input dynamically. Let's look at managing form data and handling submissions in React.

1. Controlled Components

In React, form elements like <input> or <textarea> are typically controlled components, meaning their values are managed by React’s state. Here’s an example:

import React, { useState } from 'react';

function FormExample() {
    const [inputValue, setInputValue] = useState('');

    const handleChange = (event) => {
        setInputValue(event.target.value);
    };

    return (
        <form>
            <label>
                Enter text:
                <input type="text" value={inputValue} onChange={handleChange} />
            </label>
            <p>Current Input: {inputValue}</p>
        </form>
    );
}

In this example, inputValue is the state that controls the input field. The onChange event handler updates the state whenever the user types, making it a controlled component.

2. Handling Form Submission

Handling form submission involves preventing the default behavior and capturing the input data. Here’s how to manage form submissions:

function FormSubmitExample() {
    const [name, setName] = useState('');

    const handleSubmit = (event) => {
        event.preventDefault();
        alert(`Form submitted with name: ${name}`);
    };

    return (
        <form onSubmit={handleSubmit}>
            <label>
                Name:
                <input type="text" value={name} onChange={(e) => setName(e.target.value)} />
            </label>
            <button type="submit">Submit</button>
        </form>
    );
}

Here, the handleSubmit function prevents the default form submission, allowing you to handle the form data directly within React.

3. Managing Multiple Inputs

For forms with multiple inputs, you can use a single state object to manage all fields. Here’s an example:

function MultiInputForm() {
    const [formData, setFormData] = useState({ username: '', email: '' });

    const handleChange = (event) => {
        const { name, value } = event.target;
        setFormData((prevData) => ({ ...prevData, [name]: value }));
    };

    return (
        <form>
            <label>
                Username:
                <input type="text" name="username" value={formData.username} onChange={handleChange} />
            </label>
            <label>
                Email:
                <input type="email" name="email" value={formData.email} onChange={handleChange} />
            </label>
            <button type="submit">Submit</button>
        </form>
    );
}

This example uses the name attribute of each input field to update the respective field in formData using the handleChange function.

4. Handling Checkbox and Radio Inputs

Checkbox and radio buttons require specific handling in React. Here’s how to manage checkbox state:

function CheckboxForm() {
    const [isChecked, setIsChecked] = useState(false);

    const handleCheckboxChange = () => {
        setIsChecked((prevCheck) => !prevCheck);
    };

    return (
        <form>
            <label>
                Accept Terms:
                <input
                    type="checkbox"
                    checked={isChecked}
                    onChange={handleCheckboxChange}
                />
            </label>
            <p>Accepted: {isChecked ? 'Yes' : 'No'}</p>
        </form>
    );
}

The checked attribute is used to control the state of the checkbox, toggling its state using the handleCheckboxChange function.

5. Summary

In this tutorial, you learned how to handle form inputs in React, including controlled components, form submission, managing multiple inputs, and handling checkboxes. Forms in React allow you to manage state and respond to user inputs in a dynamic and interactive way.

0 Interaction
637 Views
Views
26 Likes
×
×
🍪 CookieConsent@Ptutorials:~

Welcome to Ptutorials

Note: We aim to make learning easier by sharing top-quality tutorials.

We kindly ask that you refrain from posting interactions unrelated to web development, such as political, sports, or other non-web-related content. Please be respectful and interact with other members in a friendly manner. By participating in discussions and providing valuable answers, you can earn points and level up your profile.

$ Allow cookies on this site ? (y/n)

top-home