Empieza lo más local posible, dentro del componente que lo usa, y súbelo solo al ancestro común más cercano cuando los hermanos de verdad necesiten compartirlo. Si son datos del servidor, van en una capa de datos con caché, no en el estado del componente. Si el usuario debería poder enlazarlo, como los filtros o la pestaña actual, ponlo en la URL. Un store global es el último recurso.
Por qué lo preguntan los entrevistadores
Esta pregunta revela instintos de arquitectura más que cualquier trivialidad del framework. El entrevistador quiere ver que clasificas el estado por tipo, datos del servidor frente a estado de UI frente a estado de URL, en lugar de meterlo todo por defecto en un store global. También vigila si eres consciente del coste de subir el estado antes de tiempo, porque el estado colocado demasiado arriba provoca re-renders amplios y props que viajan por medio árbol, algo doloroso de deshacer después.
Cómo estructurar tu respuesta
- Clasifica primero el estado: servidor, URL, UI local o realmente global.
- Enuncia el criterio por defecto de mantenerlo lo más local posible.
- Da tu señal para subirlo o moverlo a un store.
- Nombra el coste de equivocarte en cualquiera de las dos direcciones.
Ejemplo de respuesta
Mi primer movimiento es averiguar qué tipo de estado es, porque la mayoría de las cosas que la gente llama estado no son estado local de verdad. Si vino del servidor, va a una caché de queries, así que obtengo deduplicación, revalidación y gestión de datos caducados en vez de montármelo a mano con useState y un efecto. Si debe sobrevivir a un refresco o poder compartirse como enlace, como los filtros activos o qué pestaña está abierta, va en la URL. Lo que queda es estado de UI genuino, y eso empieza en el componente que lo usa. Solo lo subo cuando un segundo componente lo necesita de verdad, y entonces solo hasta el padre común más cercano. Los stores globales los reservo para cosas realmente transversales, como el usuario actual o una conexión websocket. El fallo que más veces he tenido que limpiar es estado que se subió a un provider de nivel superior porque dos componentes lo necesitaron una vez, y dos años después todo se re-renderiza con cada tecla y nadie se atreve a devolverlo abajo.
¿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 funcionaPreguntas de seguimiento que puedes esperar
- ¿Cómo decides que algo pertenece a la URL en lugar de a la memoria?
- ¿Qué se rompe cuando los datos del servidor se duplican en el estado de un componente?
- ¿Cómo refactorizarías un estado que se subió demasiado arriba?
Más preguntas para Desarrollador React
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