El estado de servidor son datos que no te pertenecen: viven en una base de datos, pueden estar desactualizados en el instante en que llegan y necesitan caché, revalidación, reintentos y deduplicación. El estado de cliente son datos que sí te pertenecen, como qué pestaña está abierta o qué se ha escrito en un formulario, y es síncrono y siempre correcto. Trátalos distinto: una caché de consultas para el estado de servidor, estado local del componente o un pequeño store para el estado de cliente.
Por qué lo preguntan los entrevistadores
El entrevistador quiere saber si seguirías metiendo las respuestas de la API en un store global y escribiendo a mano las banderas de carga. Separar ambos es la idea detrás de las librerías de datos modernas, y predice cuánta complejidad accidental arrastra tu código. También abre preguntas de seguimiento sobre invalidación de caché, actualizaciones optimistas y qué pasa cuando dos componentes necesitan los mismos datos.
Cómo estructurar tu respuesta
- Define ambas categorías en términos de propiedad.
- Enumera lo que necesita el estado de servidor y el de cliente no.
- Nombra la herramienta que usas para cada uno y por qué.
- Da un síntoma de haberlo hecho mal.
Ejemplo de respuesta
El estado de servidor es una copia cacheada de algo que no controlo. Llega de forma asíncrona, puede estar desactualizado, dos componentes pueden quererlo a la vez y necesita revalidación, reintentos y deduplicación. El estado de cliente es mío: el acordeón abierto, el borrador de un formulario, el filtro seleccionado antes de aplicarlo. Es síncrono y nunca está desactualizado. En cuanto empecé a tratarlos como problemas distintos, desapareció un montón de código. Los datos de servidor van a una caché de consultas indexada por sus parámetros, que se ocupa de los estados de carga y error, deduplica peticiones concurrentes y vuelve a pedir al recuperar el foco. El estado de cliente se queda como estado local del componente hasta que más de un componente lo necesita, y solo entonces se mueve a un pequeño store compartido. El síntoma de hacerlo mal es muy reconocible: un store global lleno de entidades, booleanos de carga escritos a mano en cada pantalla y un bug donde dos componentes piden el mismo usuario y no se ponen de acuerdo. He mantenido esa aplicación y no la volvería a construir así.
¿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 gestionas una actualización optimista que el servidor rechaza?
- ¿Cuál es tu estrategia de invalidación tras una mutación?
- ¿Cuándo necesita el estado de cliente ser global de verdad?
Más preguntas para Desarrollador frontend
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