Existe un cierto acuerdo en la comunidad de desarrolladores sobre algunos temas que comúnmente se ven como grandes problemas: nombrar cosas, caché y manejo de estado. Al crear la interfaz de usuario y las experiencias del usuario a través de aplicaciones web, una de las mayores dificultades es cómo lidiar con el estado de la aplicación.
La interfaz de usuario es una función del estado. En otras palabras, ** estado es una estructura de datos que representa una instantánea de la realidad en la interfaz de la aplicación ** o más simplemente, es una representación programática de lo que el usuario ve en un momento determinado. El estado es la expectativa que tiene el usuario de cómo debe funcionar la aplicación, esto es parte de la batalla constante que libramos al agregar estado a las aplicaciones. "¿Lo que ve el usuario es exactamente uno a uno con lo que el estado representa internamente?".
Administrar el estado es un problema conocido en la ciencia de la computación, hay una gran rama de investigación que creó un concepto llamado máquinas de estados finitos, un modelo matemático que representa una "máquina" que puede estar exactamente en uno de un número finito de estados en cualquier hora. La máquina puede pasar a un estado u otro en respuesta a algunas entradas. Esta definición es exactamente lo que queremos de nuestras interfaces.
- Estado de la interfaz de usuario: el tipo de estado que se deriva de la interacción del usuario con ciertas partes de la interfaz de usuario, como Modals, alertas e incluso autenticación. Tenemos el control y la propiedad completos de este estado. El tipo de estado que se elimina cada vez que actualiza su navegador. Es sincrónico y fácil de recuperar.
- Estado del servidor o estado de la caché: el tipo de datos que se conservan de forma remota, asíncronos con propiedad compartida que pueden estar potencialmente desactualizados.
Los actuales UI frameworks presentan cierto grado de ser ** solución de manejo de estado **, ofreciendo algunas herramientas básicas para administrar el estado que pertenece a la interfaz de usuario por sí misma, pero cuando necesitamos lidiar con lo que llamamos estado del servidor, nuestros frameworks no son suficientes.
** El estado del servidor ** presenta nuevos desafíos que enfrentar, como el almacenamiento en caché, las solicitudes de deduplicación, la recuperación incremental, las mutaciones, las solicitudes desactualizadas y la sincronización de los datos.
Entonces, en resumen:
- El estado del servidor son datos que no controlamos. Es una instantánea de los datos que devolvió alguna API.
- El estado de la interfaz de usuario es predecible, fácil de administrar y para razonar.