El estado conserva información entre renders. Cada render observa un snapshot; actualizar state solicita otro render, no cambia la variable actual.
10–15 min
🟢 Base🟡 Entrevista🔴 Senior
Qué debes entender
El estado conserva información entre renders. Cada render observa un snapshot; actualizar state solicita otro render, no cambia la variable actual.
Cómo funciona
React asocia estado con la posición del componente en el árbol. El batching agrupa actualizaciones compatibles. El estado derivado debe calcularse cuando sea posible.
Ejemplo
const [count, setCount] = useState(0);
setCount(c => c + 1);
setCount(c => c + 1);
Resultado2 en el siguiente render
Qué está pasando
La forma funcional recibe el estado más reciente dentro de la cola; dos actualizaciones incrementan dos veces.
Pregunta típica
¿Por qué no guardarías filteredItems en state?
Respuesta Senior
Si puede derivarse de props y filtros, lo calcularía durante render. Duplicarlo crea dos fuentes de verdad y riesgo de desincronización.
Cuando cambia el orden, React identifica cada Row por su id y mueve la instancia correcta.
Pregunta típica
¿Por qué es peligroso usar el índice como key?
Respuesta Senior
En listas reordenables puede asociar estado y DOM con el elemento equivocado. Solo es aceptable en listas estáticas sin inserciones ni orden cambiante.
Un Effect sincroniza React con un sistema externo: red, DOM imperativo, suscripciones o timers. No es el lugar por defecto para derivar estado.
10–15 min
🟢 Base🟡 Entrevista🔴 Senior
Qué debes entender
Un Effect sincroniza React con un sistema externo: red, DOM imperativo, suscripciones o timers. No es el lugar por defecto para derivar estado.
Cómo funciona
El setup corre tras commit; antes de repetirlo React ejecuta cleanup del efecto anterior. En desarrollo Strict Mode ayuda a detectar efectos no simétricos.
El cleanup evita intervalos duplicados y fugas cuando cambian dependencias o se desmonta el componente.
Pregunta típica
¿Cuándo NO usarías useEffect?
Respuesta Senior
Para transformar datos usados en render, manejar un click o sincronizar dos estados internos. Esos casos suelen resolverse calculando durante render o dentro del evento.
La memoización evita repetir trabajo cuando sus entradas no cambiaron. Tiene costo y no corrige componentes impuros ni arquitecturas con estado mal ubicado.
10–15 min
🟢 Base🟡 Entrevista🔴 Senior
Qué debes entender
La memoización evita repetir trabajo cuando sus entradas no cambiaron. Tiene costo y no corrige componentes impuros ni arquitecturas con estado mal ubicado.
Cómo funciona
React.memo compara props superficialmente; useMemo conserva un resultado; useCallback conserva la referencia de una función. React Compiler puede automatizar parte de esta memoización.
Context distribuye un valor; Redux coordina estado global con flujo predecible; TanStack Query administra estado remoto, caché y sincronización. No resuelven el mismo problema.
10–15 min
🟢 Base🟡 Entrevista🔴 Senior
Qué debes entender
Context distribuye un valor; Redux coordina estado global con flujo predecible; TanStack Query administra estado remoto, caché y sincronización. No resuelven el mismo problema.
Cómo funciona
Un cambio de valor en Context vuelve a evaluar consumidores. Redux permite suscripciones selectivas. Server state requiere políticas de stale time, refetch y deduplicación.
Ejemplo
Context: tema/autenticación
Redux: workflow global complejo
Query: datos del servidor
ResultadoElegir por naturaleza del estado
Qué está pasando
La herramienta se selecciona por ownership, frecuencia de cambio, trazabilidad y ciclo de vida.
Pregunta típica
¿Cuándo Context se convierte en problema?
Respuesta Senior
Cuando un provider concentra valores que cambian frecuentemente y provoca renders amplios o mezcla dominios. Lo dividiría, estabilizaría valores o usaría un store con selectores.
Un formulario controlado usa state como fuente de verdad. Librerías como React Hook Form reducen renders y organizan validación, errores y registro de campos.
10–15 min
🟢 Base🟡 Entrevista🔴 Senior
Qué debes entender
Un formulario controlado usa state como fuente de verdad. Librerías como React Hook Form reducen renders y organizan validación, errores y registro de campos.
Cómo funciona
La decisión depende de complejidad. Para campos simples, controlado es suficiente; para formularios grandes, registro no controlado y schemas suelen escalar mejor.
La librería observa el input y entrega valores/errores al submit sin un setState por cada tecla.
Pregunta típica
¿Cómo diseñarías un formulario grande?
Respuesta Senior
Separaría modelo, validación y presentación; usaría schemas compartibles, accesibilidad para errores, secciones aisladas y evitaría estado global para cada campo.
CSR renderiza principalmente en cliente; SSR produce HTML por solicitud; hydration conecta interactividad. Server Components renderizan en un entorno separado y reducen JavaScript cliente para partes no interactivas.
10–15 min
🟢 Base🟡 Entrevista🔴 Senior
Qué debes entender
CSR renderiza principalmente en cliente; SSR produce HTML por solicitud; hydration conecta interactividad. Server Components renderizan en un entorno separado y reducen JavaScript cliente para partes no interactivas.
Cómo funciona
SSR y RSC son conceptos distintos. La hidratación requiere que el primer render cliente coincida con el HTML. Los límites cliente determinan cuánto JS se envía.
El detalle puede resolverse en servidor y el botón conserva interactividad en un límite cliente.
Pregunta típica
¿Qué causa un hydration mismatch?
Respuesta Senior
Diferencias entre HTML del servidor y primer render cliente: fechas, random, acceso al navegador o datos inconsistentes. Lo resolvería haciendo el render determinista.
El test no depende de state interno ni clases CSS; verifica lo que una persona puede usar y observar.
Pregunta típica
¿Qué evitarías testear?
Respuesta Senior
Detalles de implementación como state interno, nombres de funciones o estructura accidental. Probaría comportamiento, accesibilidad y contratos de integración.