O que é React?
Uma página com um botão que conta cliques precisa manter o número sincronizado com 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ê terá um monte de atualizações manuais espalhadas pelo código, cada uma delas um lugar onde um bug pode aparecer quando os dados mudam em outro lugar da 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 mostra o que isso significa na prática: a ideia central por trás do React, onde funciona e como se encaixa na questão biblioteca-versus-framework que surge cedo para a maioria das pessoas que estão aprendendo.
Componentes e a ideia central
Aqui está esse 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)}>
Clicked {count} times
</button>
)
}Este exemplo usa algumas coisas que você ainda não conhece: a marcação dentro de return é JSX, useState é um hook, e onClick é um manipulador de eventos. Os capítulos Components e JSX cobrem essa marcação, State cobre useState em detalhes, e Events cobre onClick, então confie na sintaxe por enquanto e siga a forma da ideia.
count é o estado. O JSX retornado por Counter descreve o que o botão deve mostrar para esse estado. Clicar no botão chama setCount, que atualiza count, e React renderiza novamente o botão para corresponder. Você nunca toca o texto do botão diretamente. Você o descreve novamente para o novo valor, e React descobre o que mudou na página.
Essa é a ideia central em todo componente React: você descreve a interface como uma função de seus dados, geralmente chamado estado, e React cuida 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 da mesma forma que o contador acima.
Onde React funciona
React funciona principalmente no navegador, renderizando componentes para o DOM. Esse é o ambiente em que este manual permanece ao longo do tempo.
O modelo de componentes do React não está vinculado especificamente ao DOM. Outros renderizadores conectam o mesmo modelo a diferentes destinos. O exemplo mais conhecido é React Native, que usa os componentes e o modelo de estado do React para impulsionar 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 manual.
Biblioteca ou framework?
React renderiza a interface. Ele não traz roteamento, não decide como você carrega dados e não trata renderização no servidor. Essas são escolhas que você faz, muitas vezes buscando outra ferramenta junto com ela. Essa é a razão prática pela qual React é considerado uma biblioteca em vez de um framework completo: ele faz um trabalho bem e deixa o resto para você, em vez de possuir o app inteiro como um framework faz.
The kinds of frameworks cobre essa distinção em detalhes, incluindo onde React se encaixa ao lado de algo como Next.js, que adiciona as peças que faltam.
A seguir: History and versions, que cobre como React chegou aqui e o que mudou de versão para versão.

