## glossário
O que é React?
React é uma biblioteca JavaScript criada pelo Facebook em 2013 para construir interfaces de usuário. Sua proposta central é descrever a interface como uma função do estado: você declara como a tela deve parecer para cada situação, e o React se encarrega de atualizar o DOM quando os dados mudam.
Isso substitui o modelo imperativo, em que o desenvolvedor manipulava manualmente cada elemento. A diferença aparece rápido: com dez elementos interdependentes, controlar as atualizações à mão vira uma fonte constante de bugs.
Componentes, props e estado
Um componente é uma função que recebe dados e devolve o que deve aparecer na tela. Os dados que vêm de fora são props (imutáveis, do pai para o filho); os dados que o componente controla internamente são estado.
function Contador({ titulo, passo = 1 }) { // props
const [valor, setValor] = useState(0); // estado
return (
<section>
<h2>{titulo}</h2>
<p>Valor atual: {valor}</p>
<button onClick={() => setValor(valor + passo)}>
Somar {passo}
</button>
</section>
);
}
<Contador titulo="Cliques" passo={2} />Os hooks essenciais
- useState — cria um pedaço de estado local e a função que o atualiza.
- useEffect — executa efeitos colaterais (buscar dados, assinar eventos) após a renderização.
- useContext — lê dados compartilhados sem passar props por vários níveis.
- useMemo e useCallback — memorizam valores e funções para evitar recálculos caros.
- useRef — guarda um valor mutável que não dispara nova renderização.
A regra que mais confunde iniciantes
Estado no React é imutável. Você não altera o valor existente — cria um novo e o entrega ao setter. Modificar um array ou objeto diretamente não dispara nova renderização, porque o React compara referências, não conteúdo.
// errado: muta o array existente, a tela não atualiza
tarefas.push(nova);
setTarefas(tarefas);
// certo: cria um novo array, o React percebe a mudança
setTarefas([...tarefas, nova]);
// certo: quando o novo valor depende do anterior
setValor((anterior) => anterior + 1);O ecossistema em volta
React resolve a camada de interface e deixa o resto para a comunidade: Next.js para roteamento e renderização no servidor, TanStack Query para dados remotos, Zustand ou Redux para estado global, React Hook Form para formulários. Essa modularidade é força e custo — dá liberdade, mas exige decisões. Para começar do zero, veja Iniciando com React.
## faq
Perguntas frequentes
React é framework ou biblioteca?
Oficialmente é uma biblioteca, porque cobre apenas a camada de interface — não traz roteamento, requisições HTTP nem gerenciamento de estado global. Na prática, o conjunto de ferramentas que se usa junto com ele cumpre o papel de um framework.
Qual a diferença entre React e Next.js?
React é a biblioteca de interface. Next.js é um framework construído sobre o React que adiciona roteamento por arquivos, renderização no servidor, geração estática, otimização de imagens e rotas de API. Quem usa Next.js está usando React por dentro.
Por que meu useEffect roda duas vezes em desenvolvimento?
É o StrictMode do React 18 montando e desmontando o componente de propósito, para expor efeitos sem limpeza adequada. Isso acontece apenas em desenvolvimento — em produção roda uma vez. Se o comportamento duplicado quebra algo, o efeito provavelmente precisa de uma função de cleanup.
## leia também