useRef as Container Ref como Contêiner

Última atualização: 2026-11-03

useRef as Container Ref como Contêiner

Um ref não serve só para o DOM: é uma caixa de nota adesiva que sobrevive a renderizações e serve a dados como ids de temporizador, o valor anterior ou uma flag de montado que muda sem que você queira uma re-renderização. É mais leve que state e mais seguro que uma variável de nível de módulo, porque cada instância de componente é isolada. Um ref é o lar certo para dados que descrevem o processo e não a interface: ele precisa sobreviver a uma renderização, mas nada na tela depende dele.

GrupoEfeitos e Desempenho
TipoPadrão

ℹ️ Informação O editor transpila JSX para JavaScript e renderiza a UI real na sandbox; os componentes são montados automaticamente — sem render manual.

📝 Sintaxe

const timerRef = useRef(null)
timerRef.current = setInterval(...)   // store
clearInterval(timerRef.current)       // read

// the lazy initialization idiom:
if (ref.current === null) ref.current = expensiveInit()

Retorna:Sem valor de retorno; esta entrada descreve um padrão de codificação e não uma função.

▶ Exemplo

O exemplo roda direto: renderiza automaticamente ao expandir e edições valem na hora.

Saída:

Cada clique em +1 eleva o número em "Current" enquanto "previous" continua mostrando o valor de antes da mudança — o ref guarda um snapshot histórico sem causar renderizações extras.

💡 Pontos-chave

💡 Dica Decida entre state e ref assim: se a UI tem de acompanhar o valor, use state; se for apenas dado de processo (um id de temporizador, um snapshot), use um ref.
ℹ️ Informação Um ref é mais seguro que uma variável de nível de módulo: várias instâncias do mesmo componente mantêm cada uma sua própria cópia e nunca se poluem mutuamente.
⚠️ Aviso Sob renderização concorrente, ref.current pode ser lido por outra renderização, então não trate um ref como a fonte de dados principal da renderização.
Mais casos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

P Como escolho entre guardar um valor em um ref e em state?
R Conteúdo que afeta a renderização pertence a state; dados intermediários usados apenas em manipuladores de eventos e efeitos (ids, flags, snapshots) pertencem a um ref.
P Por que mudar ref.current não dispara uma renderização?
R O React só rastreia mudanças em state e props; um ref é um objeto mutável comum, então escrever nele é JavaScript puro e nunca entra no agendador de renderização.
P Posso escrever em um ref durante a renderização?
R Não, exceto para inicialização preguiçosa (if (ref.current === null)); faça a escrita em um manipulador de eventos ou em um useEffect.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%