O que é React?
Uma página com um botão que conta cliques precisa manter o número sincronizado a cada clique. Em JavaScript puro, você pega o nó de texto do botão, adiciona um listener de clique e atualiza o número manualmente cada vez que alguém clica. Adicione um filtro de busca, um total de carrinho de compras e um modal que abre e fecha, e você tem um monte de atualizações manuais espalhadas pelo código agora, cada uma um lugar onde um bug pode aparecer quando os dados mudam em outro lugar na página.
React é uma biblioteca JavaScript para construir interfaces de usuário a partir de componentes, e ela tira esse trabalho manual de você. Este capítulo explora o que isso significa na prática: a ideia central por trás do React, onde é executado e como se encaixa na questão biblioteca-versus-framework que aparece cedo para a maioria das pessoas que o aprendem.
Componentes e a ideia central
Aqui está o mesmo contador de cliques escrito como um componente React:
import { useState } from 'react'
function Counter() {
const [count, setCount] = useState(0)
return (
<button onClick={() => setCount(count + 1)}>
Clicado {count} vezes
</button>
)
}Este exemplo usa algumas coisas que você ainda não viu: o código dentro de return é JSX, useState é um hook, e onClick é um event handler. Os capítulos Components e JSX cobrem esse código, State cobre useState em detalhes, e Events cobre onClick, então confie na sintaxe por enquanto e siga a estrutura da ideia.
count é o state. O JSX retornado por Counter descreve o que o botão deve mostrar para esse state. Clicar no botão chama setCount, que atualiza count, e React re-renderiza o botão para corresponder. Você nunca toca o texto do botão diretamente. Você descreve novamente para o novo valor, e React descobre o que mudou na página.
Essa é a ideia central que fica sob cada componente React: você descreve a interface como uma função dos seus dados, geralmente chamado state, e React se encarrega de atualizar o DOM para corresponder. Um componente é uma função que retorna um pedaço de interface, e um app é uma árvore de componentes combinados, todos funcionando do mesmo jeito que o contador acima.
Onde React é executado
React é executado principalmente no navegador, renderizando componentes para o DOM. Esse é o ambiente em que este handbook permanece durante todo o tempo.
O modelo de componentes do React não é específico do DOM. Outros renderers conectam o mesmo modelo em diferentes destinos. O exemplo mais conhecido é React Native, que usa os componentes e o modelo de state do React para conduzir interfaces móveis nativas em vez de uma página web. É mencionado aqui para que o nome não seja uma surpresa depois. Ensiná-lo está fora do escopo deste handbook.
Biblioteca ou framework?
React renderiza interface. Não vem com roteamento, não decide como você carrega dados e não gerencia renderização no servidor. Essas são escolhas que você faz você mesmo, geralmente alcançando outra ferramenta junto com ele. Essa é a razão prática pela qual React é considerado uma biblioteca em vez de um framework completo: faz um trabalho bem e deixa o resto para você, em vez de controlar o app inteiro como um framework faz.
Os tipos de frameworks cobre essa distinção em detalhes, incluindo onde React fica ao lado de algo como Next.js, que adiciona as peças faltantes.
Onde é executado, no navegador ou algo como React Native, é um detalhe para depois. O hábito é o que importa agora.
Próximo: História e versões, que cobre como React chegou aqui e o que mudou versão a versão.

