Back to Developer

React

Preguntas de entrevista de React: conceptos básicos, hooks, renderizado y rendimiento, y gestión de estado y ecosistema.

Conceptos básicos

¿Qué es React?
Una biblioteca de JavaScript para construir interfaces de usuario basadas en componentes.
¿Qué es el Virtual DOM?
Una representación ligera en memoria del DOM real, utilizada para optimizar las actualizaciones.
¿Qué es JSX?
Una extensión de sintaxis para JavaScript que permite escribir código similar a HTML dentro de JS.
State vs Props
State es interno y se gestiona dentro del componente; Props son externos y se pasan desde un componente padre.
Componentes de Clase vs Funcionales
Los componentes funcionales son funciones JS simples; los componentes de clase usan clases ES6 y tienen métodos de ciclo de vida.
¿Por qué se necesita la prop key en las listas?
Ayuda a React a identificar qué elementos han cambiado, se han añadido o eliminado para un renderizado eficiente.
¿Qué es un React Fragment?
Una sintaxis (<>...</>) para agrupar múltiples elementos sin añadir nodos extra al DOM.
¿Qué es un Higher-Order Component (HOC)?
Una función que recibe un componente y devuelve un nuevo componente con lógica adicional.
¿Qué es la Reconciliation?
El algoritmo que usa React para comparar el virtual DOM y aplicar solo las actualizaciones necesarias.
¿Qué es StrictMode?
Una herramienta para destacar posibles problemas en una aplicación durante el desarrollo.
Elemento vs Componente
Un Element es un objeto plano que describe una interfaz; un Component es la función/clase que lo devuelve.
Ventajas de React
Arquitectura basada en componentes, gran ecosistema, amigable con el SEO (con SSR) y alto rendimiento.
Composición vs Herencia
React fomenta el uso de la composición (anidando componentes) en lugar de la herencia para reutilizar código.
¿Qué es React Fiber?
El motor de reconciliación actual, diseñado para mejorar la fluidez y soportar el renderizado incremental.
¿Qué es React y por qué se usa?
Una biblioteca de UI centrada en vistas declarativas, reutilización de componentes y renderizado eficiente mediante el Virtual DOM.
¿Por qué son importantes las keys en las listas?
Ayudan a React a rastrear la identidad de los elementos de forma eficiente.
¿Por qué no usar el índice del array como key?
Rompe el algoritmo de reconciliación cuando cambia el orden de la lista.
¿Cuál es la complejidad del algoritmo de reconciliación?
O(n) con heurísticas usando keys.

Hooks

¿Qué son los Hooks?
Funciones que permiten usar el estado y otras características de React en componentes funcionales.
Propósito de useEffect
Se utiliza para efectos secundarios como la obtención de datos, suscripciones o manipulaciones manuales del DOM.
¿Qué hace useState?
Declara una variable de estado que React preserva entre re-renderizados.
useEffect vs useLayoutEffect
useEffect se ejecuta después del pintado; useLayoutEffect se ejecuta de forma síncrona antes del pintado.
¿Qué es useMemo?
Un hook que memoiza el resultado de un cálculo costoso para evitar recomputaciones innecesarias.
¿Qué es useCallback?
Un hook que memoiza una instancia de función para evitar que se vuelva a crear en cada renderizado.
¿Qué es useRef?
Crea una referencia persistente que no provoca un re-renderizado cuando cambia su valor.
¿Qué es useContext?
Permite acceder a datos globales (como temas o usuarios) sin hacer prop drilling manual.
Propósito de useReducer
Una alternativa a useState para lógica de estado compleja, similar al patrón de Redux.
Reglas de los Hooks
1. Llámales solo en el nivel superior. 2. Llámales solo desde funciones de React o custom hooks.
¿Qué es un Custom Hook?
Una función JS que comienza con "use" y puede llamar a otros hooks para reutilizar lógica con estado.
¿Qué es forwardRef?
Una técnica para pasar un ref automáticamente a través de un componente a un hijo.
¿Qué es useId?
Un hook para generar IDs únicos que son estables entre el servidor y el cliente.
Ciclo de vida: Montaje
constructor, render, componentDidMount (Clase); useEffect con [] (Función).
Ciclo de vida: Desmontaje
componentWillUnmount (Clase); función de limpieza de useEffect (Función).
¿Qué es useSyncExternalStore?
Un hook para suscribirse a stores externos (p. ej., APIs del navegador) de forma segura para el renderizado concurrente.
¿Qué es un efecto secundario (Side Effect)?
Cualquier operación que afecta algo fuera del ámbito de la función que se está ejecutando (p. ej., llamadas a una API).
¿Qué problemas resuelven los hooks?
Eliminan la complejidad de las clases y permiten reutilizar lógica mediante custom hooks.
¿Cómo funciona el array de dependencias?
Controla cuándo se vuelven a ejecutar los efectos mediante comparación superficial.
¿Qué es useReducer?
Una alternativa a useState para lógica de estado compleja.
¿Cómo manejar efectos asíncronos?
Usa useEffect con limpieza y controladores de aborto (abort controllers).
¿Cuándo usar refs en lugar de state?
Cuando los cambios no deben provocar un re-render.

Renderizado y rendimiento

¿Cómo optimizar el rendimiento en React?
Usa React.memo, useMemo, useCallback, lazy loading y evita funciones anónimas en el render.
¿Qué es React.memo?
Un higher-order component que evita que un componente funcional se rerenderice si las props no cambian.
¿Qué sucede durante setState?
React programa una actualización, fusiona el nuevo estado y desencadena un re-render del árbol de componentes.
¿Por qué no mutar el estado directamente?
React detecta los cambios por referencia; mutar el objeto original impide que se desencadene un re-render.
¿Qué es un Pure Component?
Un componente que devuelve la misma salida para los mismos props y estado, omitiendo renders innecesarios.
Batching en React 18
La capacidad de React para agrupar múltiples actualizaciones de estado en un único re-render para mejorar el rendimiento.
¿Qué provoca re-renders?
Cambios de estado, cambios de props o actualizaciones de contexto.
¿Cómo maneja React la inmutabilidad?
Se basa en cambios de referencia para detectar actualizaciones.
¿Qué es el Concurrent React?
Permite renderizado interrumpible para una mejor UX.
¿En qué se diferencia Suspense de useEffect?
Suspense maneja lo asíncrono a nivel de renderizado.

Estado, flujo de datos y ecosistema

¿Qué es Lifting State Up?
Mover el estado al ancestro común más cercano para compartir datos entre componentes hermanos.
Componentes Controlados vs No Controlados
Los componentes controlados gestionan los datos del formulario mediante state; los no controlados usan el DOM (a través de Refs).
¿Qué son los Error Boundaries?
Componentes de clase que capturan errores de JS en su árbol de hijos y muestran una UI de respaldo.
¿Qué es el Prop Drilling?
El proceso de pasar datos a través de varios niveles de componentes que no los necesitan.
React.lazy y Suspense
Se usan para code-splitting y cargar componentes solo cuando son necesarios.
¿Cómo se manejan los eventos en React?
React usa SyntheticEvents, que son envoltorios cross-browser alrededor de los eventos nativos del navegador.
¿Qué es Redux?
Una biblioteca externa para la gestión de estado global que sigue un flujo de datos unidireccional.
¿Qué son los Portals?
Proporcionan una forma de renderizar hijos en un nodo del DOM que existe fuera de la jerarquía del componente padre.
¿Qué es la Hydration?
El proceso de adjuntar event listeners al HTML renderizado en el servidor para hacerlo interactivo.
¿Qué es CSS-in-JS?
Un enfoque de estilos donde el CSS se escribe usando JS (p. ej., Styled Components) para un alcance local.
¿Cómo testear React?
Comúnmente se prueba con Jest (test runner) y React Testing Library (pruebas centradas en la UI).
Redux vs Context API
Context sirve para pasar props; Redux es un sistema completo de gestión de estado con herramientas de desarrollo avanzadas.
¿Qué es SSR?
Server-Side Rendering: renderizar la aplicación a HTML en el servidor para una carga inicial más rápida y mejor SEO.
¿Qué es la Context API?
Una forma de pasar datos sin prop drilling.
SSR vs CSR
SSR mejora la carga inicial y el SEO; CSR transfiere el trabajo al cliente.
¿Qué es el code splitting?
Cargar código bajo demanda para reducir el tamaño del bundle.
¿Qué es la arquitectura Flux?
Patrón de flujo de datos unidireccional.
¿Cómo estructurar aplicaciones React grandes?
Carpetas basadas en funcionalidades, hooks compartidos, separación por dominio.
Pruebas unitarias vs de integración
Las pruebas unitarias aíslan la lógica; las de integración verifican la interacción.
¿Qué son los eventos sintéticos?
Un wrapper de React alrededor de los eventos nativos del navegador.
¿Cómo manejar formularios a escala?
Inputs controlados + bibliotecas de validación.
Consideraciones de seguridad en React
Prevención de XSS mediante escape, evitar dangerouslySetInnerHTML.
¿Cómo maneja React el XSS?
Escapa los valores por defecto.