🚀 Capítulo 09: Formulários - Alistamento
🎯 Objetivo da Aula
Ao final desta aula, você saberá como capturar dados digitados pelo usuário em formulários usando o conceito de Componentes Controlados (Controlled Components) no React.
🏢 O Cenário Prático (Seu Desafio)
A Aliança Rebelde precisa de novos voluntários! Seu desafio hoje é criar o formulário de Alistamento de Rebeldes. Você precisará capturar o nome do voluntário e a sua função desejada (Piloto, Jedi ou Mecânico).
🧠 Fundamentos: A Teoria Traduzida
No HTML comum, o próprio navegador guarda o que você digita no campo de texto. No React, nós preferimos que o Estado do componente controle o que aparece na tela. Isso se chama Componente Controlado.
Como funciona?
- Criamos um estado para guardar o texto:
const [nome, setNome] = useState(''); - Dizemos que o valor do input é esse estado:
value={nome} - Toda vez que o usuário digitar algo, o evento
onChangeatualiza o estado:onChange={(e) => setNome(e.target.value)}
📖 Exemplo Guiado: Formulário de Nome
Vamos criar um formulário simples.
🛠️ Passo a Passo
Abra o arquivo src/App.jsx e altere o código:
import { useState } from 'react';
function App() {
const [nome, setNome] = useState('');
function enviarFormulario(e) {
e.preventDefault(); // Evita que a página recarregue
alert(`Bem-vindo à Aliança, ${nome}!`);
}
return (
<div>
<h1>📝 Alistamento Rebelde</h1>
<form onSubmit={enviarFormulario}>
<label>Nome do Voluntário:</label>
<input
type="text"
value={nome}
onChange={(e) => setNome(e.target.value)}
/>
<button type="submit">Alistar</button>
</form>
{/* Mostrando o valor em tempo real */}
<p>Digitando: {nome}</p>
</div>
)
}
export default App;🕹️ Como Executar e Testar no VS Code
- Salve e veja o navegador.
- Digite seu nome no campo. Veja que o texto abaixo do formulário muda na mesma hora!
- Clique em “Alistar” e veja o alerta.
🛠️ Prática Obrigatória 1
Adicione um novo campo do tipo <select> (menu suspenso) para o usuário escolher a função: “Piloto” ou “Jedi”. Crie um novo estado const [funcao, setFuncao] = useState('Piloto'); para controlar esse campo.
🛠️ Prática Obrigatória 2
Atualize a mensagem do alert() para mostrar também a função escolhida (ex: “Bem-vindo à Aliança, Luke! Sua função será: Jedi”).
🔑 Gabarito de Código/Fórmulas
Prática 1 e 2:
No App.jsx:
const [nome, setNome] = useState('');
const [funcao, setFuncao] = useState('Piloto');
function enviarFormulario(e) {
e.preventDefault();
alert(`Bem-vindo à Aliança, ${nome}! Sua função será: ${funcao}`);
}
return (
<form onSubmit={enviarFormulario}>
<input value={nome} onChange={(e) => setNome(e.target.value)} />
<select value={funcao} onChange={(e) => setFuncao(e.target.value)}>
<option value="Piloto">Piloto</option>
<option value="Jedi">Jedi</option>
</select>
<button type="submit">Alistar</button>
</form>
)