useRef: referencia persistente y acceso al DOM cuando toca

Aprende cuándo usar useRef para interactuar con elementos del DOM o guardar valores mutables sin disparar re-renders.

useRef es útil para dos casos clave: guardar una referencia a un nodo del DOM y mantener valores mutables entre renders sin volver a pintar la UI.

A diferencia de useState, cambiar `ref.current` no dispara render. Esa es su fortaleza y también una fuente de errores si lo usas para datos visuales.

En proyectos reales, useRef aparece mucho en foco automático de inputs, control de scroll, integración con librerías externas y timers.

La regla práctica: si el dato debe reflejarse en pantalla, usa estado; si es un detalle técnico de sincronización o referencia, usa ref.

  • No compiten: resuelven problemas distintos.
  • useState guarda datos de UI y provoca render cuando cambian.
  • useRef guarda valores mutables que persisten entre renders sin afectar al pintado.
  • Usar ref para estado visual suele crear desincronización entre dato real y UI.
  • Estado visual: useState.

useState vs useRef

No compiten: resuelven problemas distintos.

useState guarda datos de UI y provoca render cuando cambian.

useRef guarda valores mutables que persisten entre renders sin afectar al pintado.

Usar ref para estado visual suele crear desincronización entre dato real y UI.

  • Estado visual: useState.
  • Referencia técnica/DOM: useRef.
  • No render en `ref.current`.
  • Persistencia entre renders.

Acceso controlado al DOM

React evita manipulación imperativa, pero hay casos legítimos donde ref es la vía correcta.

Patrones frecuentes en producción

La mayoría de usos correctos de ref están ligados a integración o control de interacción.

Persistir id de interval/timeout para limpiarlo después.

Medir dimensiones de un nodo tras render para cálculos de layout.

Mantener última versión de un callback en casos concretos de suscripciones.

Guardar referencias a objetos externos como timelines, instancias de librerías o nodos 3D. Ese patrón reaparece en <a href="/curso/gasp-three-js/leccion/gasp-three-js-canvas-camara-r3f-escenas/">Canvas, cámara y frameloop en R3F</a>.

React
09

useRef: referencia persistente y acceso al DOM cuando toca

Aprende cuándo usar useRef para interactuar con elementos del DOM o guardar valores mutables sin disparar re-renders.

Código del tema: Componentes, estado y render declarativo

📘 Teoría

useState vs useRef

No compiten: resuelven problemas distintos.

useState guarda datos de UI y provoca render cuando cambian.

useRef guarda valores mutables que persisten entre renders sin afectar al pintado.

Usar ref para estado visual suele crear desincronización entre dato real y UI.

  • Estado visual: useState.
  • Referencia técnica/DOM: useRef.
  • No render en `ref.current`.
  • Persistencia entre renders.

Acceso controlado al DOM

React evita manipulación imperativa, pero hay casos legítimos donde ref es la vía correcta.

Patrones frecuentes en producción

La mayoría de usos correctos de ref están ligados a integración o control de interacción.

Persistir id de interval/timeout para limpiarlo después.

Medir dimensiones de un nodo tras render para cálculos de layout.

Mantener última versión de un callback en casos concretos de suscripciones.

Guardar referencias a objetos externos como timelines, instancias de librerías o nodos 3D. Ese patrón reaparece en Canvas, cámara y frameloop en R3F.

🧪 Aprende probando

Ejemplo Ejemplo: foco bajo demanda Botón que envía el foco al input usando ref sin tocar querySelector.

🏁 Retos

Reto Reto: conecta el ref al input Completa el componente para que el botón pueda enfocar el campo.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre React.

Test de React

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros. culTest

La hice en febrero de 2026 para facilitar el aprendizaje de mis alumnos. La idea es aprender desarrollo web practicando y que el proyecto siga creciendo con nuevos temas, tests y retos.

Está inspirada en MDN, W3Schools, CodePen, Manz y muchos otros sitios de documentación sobre desarrollo web. Quería combinar teoría útil, ejemplos ejecutables, retos y el sistema de tests que ya tenía en culTest. culTest

Si te gustó, si no te gustó o si quieres escribirme, puedes hacerlo en cristianeslava@gmail.com