Pregunta de entrevista para Desarrollador full stack

¿Qué provoca realmente que un componente de React se vuelva a renderizar y por qué eso no es lo mismo que una actualización del DOM?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

Un componente se vuelve a renderizar cuando cambia su propio estado, cuando un contexto que consume publica un valor nuevo o cuando su padre se vuelve a renderizar y produce un elemento nuevo para él. Renderizar solo llama a la función y produce una descripción de la interfaz. React entonces la compara con el árbol anterior y solo aplica los cambios del DOM que difieren, así que la mayoría de los re-renderizados no tocan el DOM en absoluto.

Por qué lo preguntan los entrevistadores

Muchos candidatos recurren a useMemo y useCallback por reflejo sin saber qué dispara el trabajo en primer lugar. El entrevistador quiere evidencia de que puedes razonar por separado sobre las fases de render y de commit, de que mides antes de optimizar y de que sabes que la memorización tiene un coste. También es una prueba silenciosa de si has perfilado alguna vez una app real de React o solo has leído sobre rendimiento.

Cómo estructurar tu respuesta

  • Enumera los tres disparadores de un render.
  • Separa la fase de render de la fase de commit.
  • Explica por qué una prop de objeto nuevo rompe la memorización en vez de forzar trabajo en el DOM.
  • Di cómo medirías antes de cambiar nada.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Tres cosas lo disparan: una actualización de estado en el componente, un cambio en un valor de contexto al que está suscrito, o que el padre se vuelva a renderizar. Ese último es donde la gente se sorprende, porque un render del padre vuelve a ejecutar cada función hija sin importar si sus props cambiaron de valor. Pero renderizar solo produce un árbol de elementos. React lo reconcilia con el árbol anterior y aplica el conjunto mínimo de mutaciones del DOM, así que un re-renderizado suele ser barato y no toca el DOM en absoluto. Los casos caros son subárboles grandes y cálculo pesado dentro del cuerpo del render. Cuando una página se sentía pesada en un producto en el que trabajé, abrí el profiler de React DevTools en vez de adivinar, y el culpable era un único contexto que guardaba a la vez el usuario actual y una cadena de búsqueda en vivo, así que cada pulsación de tecla volvía a renderizar todo el armazón autenticado. Partirlo en dos contextos lo arregló en unas diez líneas. Solo recurro a memo cuando el profiler me dice que un subárbol concreto es el problema.

¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.

Mira cómo funciona

Preguntas de seguimiento que puedes esperar

  • ¿Cuándo ayuda de verdad React.memo y cuándo es solo sobrecarga?
  • ¿Cómo cambia la prop key el comportamiento de la reconciliación?
  • ¿Qué usarías en vez de contexto para actualizaciones de alta frecuencia?

Más preguntas para Desarrollador full stack

Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.

Predecir mis preguntas

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot