Aprenda a Capturar e Manipular Valores de Inputs em Formulários React

Entenda como gerenciar valores de inputs em formulários React de maneira prática e eficiente.

Capturando e Manipulando Inputs em Formulários React

Os formulários são uma parte essencial de muitas aplicações web, permitindo que os usuários insiram dados que podem ser processados posteriormente. Neste tutorial, vamos explorar como capturar e manipular valores de inputs em um formulário React, utilizando componentes controlados e não controlados.

Componentes Controlados

Os componentes controlados são aqueles em que o estado do input é gerenciado pelo React. Isso significa que o valor do input é definido pelo estado do componente. Vamos ver um exemplo simples:

import React, { useState } from 'react';

function MeuFormulario() {
    const [valor, setValor] = useState('');

    const handleChange = (evento) => {
        setValor(evento.target.value);
    };

    const handleSubmit = (evento) => {
        evento.preventDefault();
        alert(`Valor do input: ${valor}`);
    };

    return (
        <form onSubmit={handleSubmit}>
            <label>
                Nome:
                <input type="text" value={valor} onChange={handleChange} />
            </label>
            <button type="submit">Enviar</button>
        </form>
    );
}

export default MeuFormulario;

Neste exemplo, estamos usando o hook useState para criar um estado chamado valor. A função handleChange é chamada sempre que o valor do input muda, atualizando o estado com o novo valor. Quando o formulário é enviado, exibimos o valor do input em um alerta.

Componentes Não Controlados

Por outro lado, os componentes não controlados permitem que o DOM gerencie o estado dos inputs. Isso pode ser feito usando referências (refs). Aqui está um exemplo:

import React, { useRef } from 'react';

function MeuFormulario() {
    const inputRef = useRef(null);

    const handleSubmit = (evento) => {
        evento.preventDefault();
        alert(`Valor do input: ${inputRef.current.value}`);
    };

    return (
        <form onSubmit={handleSubmit}>
            <label>
                Nome:
                <input type="text" ref={inputRef} />
            </label>
            <button type="submit">Enviar</button>
        </form>
    );
}

export default MeuFormulario;

Aqui, utilizamos a referência inputRef para acessar o valor do input diretamente do DOM, sem a necessidade de gerenciar o estado pelo React. Isso pode ser útil em algumas situações, mas geralmente, recomenda-se o uso de componentes controlados para um melhor gerenciamento de estado.

Validação de Formulários

A validação é uma parte crucial do manuseio de formulários. Podemos implementar a validação tanto nos componentes controlados quanto nos não controlados. Aqui está um exemplo de como validar um campo de input:

import React, { useState } from 'react';

function MeuFormulario() {
    const [valor, setValor] = useState('');
    const [erro, setErro] = useState('');

    const handleChange = (evento) => {
        setValor(evento.target.value);
        setErro(''); // Limpa o erro ao digitar
    };

    const handleSubmit = (evento) => {
        evento.preventDefault();
        if (!valor) {
            setErro('O campo não pode estar vazio!');
            return;
        }
        alert(`Valor do input: ${valor}`);
    };

    return (
        <form onSubmit={handleSubmit}>
            <label>
                Nome:
                <input type="text" value={valor} onChange={handleChange} />
            </label>
            {erro && <p style={{ color: 'red' }}>{erro}</p>}
            <button type="submit">Enviar</button>
        </form>
    );
}

export default MeuFormulario;

Neste código, adicionamos uma verificação para garantir que o campo não esteja vazio antes de enviar o formulário. Se estiver, exibimos uma mensagem de erro.

Manipulação de Vários Inputs

Quando trabalhamos com formulários que têm vários inputs, podemos usar um único estado para gerenciar todos eles. Aqui está um exemplo:

import React, { useState } from 'react';

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

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

    const handleSubmit = (evento) => {
        evento.preventDefault();
        alert(`Nome: ${formData.nome}, Email: ${formData.email}`);
    };

    return (
        <form onSubmit={handleSubmit}>
            <label>
                Nome:
                <input type="text" name="nome" value={formData.nome} onChange={handleChange} />
            </label>
            <label>
                Email:
                <input type="email" name="email" value={formData.email} onChange={handleChange} />
            </label>
            <button type="submit">Enviar</button>
        </form>
    );
}

export default MeuFormulario;

Aqui, estamos usando um objeto formData para armazenar os valores de múltiplos inputs, o que torna a manipulação e o envio dos dados muito mais simples.

Conclusão

Capturar e manipular valores de inputs em formulários React é uma habilidade crucial para qualquer desenvolvedor. Com a prática, você pode construir interfaces de usuário ricas e interativas que respondem rapidamente às entradas dos usuários. Experimente os exemplos acima e veja como você pode adaptar a lógica para atender às suas necessidades específicas.

Os formulários são uma parte vital das aplicações web, permitindo que usuários enviem informações importantes. Compreender como capturar e manipular dados de inputs é fundamental para qualquer desenvolvedor React. Neste tutorial, você aprenderá não apenas como gerenciar o estado de inputs, mas também como validar dados e lidar com múltiplos inputs de forma eficiente.

Algumas aplicações:

  • Formulários de cadastro
  • Formulários de login
  • Formulários de feedback
  • Formulários de pesquisa
  • Formulários de contato

Dicas para quem está começando

  • Use componentes controlados para melhor controle do estado.
  • Valide sempre os inputs antes de enviar os dados.
  • Utilize referências para casos onde o gerenciamento de estado não é necessário.
  • Mantenha seus formulários simples e intuitivos.
  • Teste frequentemente para garantir que tudo funcione como esperado.

Contribuições de Gabriel Nogueira

Compartilhe este tutorial: Como capturar e manipular valores de inputs em um formulário React?

Compartilhe este tutorial

Continue aprendendo:

Como usar formulários no React corretamente?

Aprenda a criar e gerenciar formulários no React com este guia completo.

Tutorial anterior

Como evitar problemas com undefined ao acessar props no React?

Entenda como evitar problemas com props undefined no React e melhore a qualidade do seu código.

Próximo tutorial