Pular para o conteúdo
primo-academy
☰ Aulas · Frontend · 0/12
Recomendado: essencial

State e Hooks Essenciais

State é a memória de um componente. Quando o state muda, o React re-renderiza o componente com o valor novo. É o que faz a interface reagir ao usuário.

import { useState } from "react";

function Contador() {
  const [contagem, setContagem] = useState(0);

  return (
    <div>
      <p>Você clicou {contagem} vezes</p>
      <button onClick={() => setContagem(contagem + 1)}>+1</button>
    </div>
  );
}

useState(valorInicial) devolve um par: o valor atual e a função set para atualizar. Nunca mude o state direto — sempre via set.

Os hooks mais usados (em React 19):

  • useState(valor) — guarda um valor que muda.
  • useEffect(() => { ... }, [deps]) — roda algo depois da renderização (buscar dados, inscrever em eventos,定时). O array de dependências diz quando rodar de novo.
  • useRef(valor) — uma "caixa" mutable que não causa re-render. Ótimo para acessar o DOM diretamente ou guardar valores entre renders.
  • useMemo / useCallback — memoização (pular recálculo). Use com parcimônia — só quando medir e ver que importa.

Para hooks customizados, basta extrair uma função que comece com use e use outros hooks dentro:

function useTituloDaAba(texto) {
  useEffect(() => {
    document.title = texto;
  }, [texto]);
}

Experimente

State sem React: o padrão de "valor + função que muda o valor" mora dentro de um closure. É exatamente o que useState abstrai por baixo.

function criarContador(inicial = 0) {
  let valor = inicial;
  return {
    get: () => valor,
    inc: (n = 1) => (valor += n),
    reset: () => (valor = inicial),
  };
}

const c = criarContador(0);
console.log("inicial:", c.get());
c.inc();
c.inc();
c.inc();
console.log("após 3 incrementos:", c.get());
c.reset();
console.log("após reset:", c.get());

// recursos