UI declarativa y arquitectura

React

Domina renderizado, estado, efectos, hooks, performance y decisiones de arquitectura que distinguen una respuesta Senior.

10 temas claveJunior → SeniorVersión 1
Progreso0%
0 de 10 dominados
★★★★★Junior🔥 Fundamental

JSX, componentes y props

React describe la UI como una función del estado. Un componente recibe props y devuelve una descripción declarativa de la interfaz.

10–15 min
🟢 Base🟡 Entrevista🔴 Senior

Qué debes entender

React describe la UI como una función del estado. Un componente recibe props y devuelve una descripción declarativa de la interfaz.

Cómo funciona

JSX se transforma en llamadas que crean elementos React. Los elementos son descripciones inmutables; React decide cómo aplicarlas al DOM.

Ejemplo

function Greeting({ name }) {
  return <h1>Hello {name}</h1>;
}

// render: <Greeting name="Erick" />

Pregunta típica

¿Cuál es la diferencia entre componente y elemento?

Respuesta Senior

El componente es la función o clase; el elemento es el objeto descriptivo resultante que React usa durante la reconciliación.

Repasar

Volver arriba ↑
★★★★★Junior → Senior🔥 Obligatorio

State, render y estado derivado

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);

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.

Repasar

Volver arriba ↑
★★★★★Mid → Senior🔥 Muy preguntado

Reconciliation, keys y preservación de estado

React compara árboles de elementos para decidir qué actualizar. El tipo y la key ayudan a identificar la continuidad de una instancia.

10–15 min
🟢 Base🟡 Entrevista🔴 Senior

Qué debes entender

React compara árboles de elementos para decidir qué actualizar. El tipo y la key ayudan a identificar la continuidad de una instancia.

Cómo funciona

Cambiar el tipo o la key puede desmontar y montar, reiniciando estado. Las keys deben ser estables entre renders y únicas entre hermanos.

Ejemplo

items.map(item => <Row key={item.id} item={item} />)

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.

Repasar

Volver arriba ↑
★★★★★Mid → Senior🔥 Obligatorio

useEffect y sincronización externa

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.

Ejemplo

useEffect(() => {
  const id = setInterval(tick, 1000);
  return () => clearInterval(id);
}, [tick]);

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.

Repasar

Volver arriba ↑
★★★★★Mid → Senior🔥 Muy común

React.memo, useMemo y useCallback

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.

Ejemplo

const visible = useMemo(() => filter(items, query), [items, query]);

Pregunta típica

¿Usarías useMemo en todos los cálculos?

Respuesta Senior

No. Primero mediría. useMemo agrega comparación, memoria y complejidad; lo usaría para cálculos costosos o estabilidad referencial con beneficio real.

Repasar

Volver arriba ↑
★★★★★Mid🔥 Muy preguntado

Rules of Hooks y custom hooks

Los Hooks permiten reutilizar lógica con estado. Deben llamarse en el nivel superior para conservar el mismo orden entre renders.

10–15 min
🟢 Base🟡 Entrevista🔴 Senior

Qué debes entender

Los Hooks permiten reutilizar lógica con estado. Deben llamarse en el nivel superior para conservar el mismo orden entre renders.

Cómo funciona

React asocia cada llamada con su posición. Un custom hook comparte lógica, no una única instancia de estado entre componentes.

Ejemplo

function useOnlineStatus() {
  const [online, setOnline] = useState(true);
  // suscripción + cleanup
  return online;
}

Pregunta típica

¿Qué hace que una función sea un custom hook?

Respuesta Senior

Su nombre comienza con use y puede llamar otros Hooks. Encapsula una unidad de lógica reutilizable respetando las Rules of Hooks.

Repasar

Volver arriba ↑
★★★★★Mid → Senior🔥 Arquitectura

Context, Redux y server state

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

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.

Repasar

Volver arriba ↑
★★★★★Mid🔥 Vacante

Forms controlados y React Hook Form

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.

Ejemplo

const { register, handleSubmit } = useForm();
<input {...register("email", { required: true })} />

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.

Repasar

Volver arriba ↑
★★★★★Senior🔥 Senior actual

CSR, SSR, hydration y Server Components

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.

Ejemplo

Servidor: <ProductDetails />
Cliente: <AddToCartButton />

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.

Repasar

Volver arriba ↑
★★★★★Mid → Senior🔥 Muy común

Testing con React Testing Library

Las pruebas deben dar confianza desde la perspectiva del usuario. Se consultan roles, nombres accesibles y texto antes que detalles internos.

10–15 min
🟢 Base🟡 Entrevista🔴 Senior

Qué debes entender

Las pruebas deben dar confianza desde la perspectiva del usuario. Se consultan roles, nombres accesibles y texto antes que detalles internos.

Cómo funciona

El test renderiza, interactúa y observa resultados. user-event reproduce interacciones con mayor fidelidad que llamar handlers directamente.

Ejemplo

render(<Login />);
await user.type(screen.getByLabelText(/email/i), "a@b.com");
await user.click(screen.getByRole("button", { name: /entrar/i }));

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.

Repasar

Volver arriba ↑