Entonces, las transformaciones de datos eran la segunda característica que tiene un buen gestor de estado. Veamos cómo podemos hacer transformaciones de datos en Apollo Client. Este es otro ejemplo, ¿verdad? En el lado derecho, verás un archivo de muestra data.json, donde podemos ver los productos nuevamente. Tenemos Glossier, y como nombre del artículo es lápiz labial, precio, y así sucesivamente. Es un producto de comercio electrónico muy típico, ¿verdad? En el lado izquierdo, tenemos getCartQuery, y en la parte inferior, podemos invocar esa consulta, ¿verdad? Nuevamente, así es como invocaríamos los datos. Declararíamos exactamente lo que queremos e invocaríamos esa consulta dentro de nuestro componente de React usando useQuery.
Entonces, ¿cómo manipulamos los datos entonces, verdad? ¿Cómo hacemos más cosas con ellos, por ejemplo? En este caso, nuevamente, si te fijas, estamos manipulando los datos. Así es cómo podemos manipular los datos. En el lado derecho, nuevamente, es el mismo producto, ¿verdad? Pero en el lado izquierdo, estamos invocando la consulta, y ya vimos la consulta en la diapositiva anterior, pero estamos invocando la consulta y aquí simplemente mostramos si mostrar getOutOfStockText o low stock text. Si el stock menos la cantidad es menor o igual a 2, entonces es bajo en stock. De lo contrario, si dice que está fuera de stock, está fuera de stock, ¿verdad? Nuevamente, un ejemplo muy simple, pero así es como puedes manipular los datos porque exactamente obtienes los datos de GraphQL. Pero podrías imaginar que los datos se repetirán, ¿verdad? Digamos que quieres mostrar ese mismo producto en diferentes lugares, quieres asegurarte de que también estemos almacenando el mensaje de fuera de stock en todos los lugares diferentes.
Echemos un vistazo a lo que los campos solo locales están introduciendo campos solo locales. En este caso, podemos ver que tenemos Apollo Client y Apollo Server, y en la caché misma, podemos agregar más datos. Cada vez que se realiza una consulta GraphQL o una consulta de Apollo client y obtenemos datos en el frontend, podemos agregar datos adicionales a esa caché. Todos los datos se almacenan en Apollo Client 3 en forma de caché, ¿verdad? Al igual que Redux, todos los datos se almacenaban dentro de un gestor de estado. Por ejemplo, si actualizáramos la página, los datos desaparecerían, tendríamos que volver a cargar todo de nuevo. Lo mismo ocurre aquí, es una caché, y debemos asegurarnos de que también estemos almacenando nuevos datos en esa caché. Entonces, ¿cómo puede Apollo Client diferenciar entre los datos del servidor y los datos del frontend, verdad? Esto es exactamente lo que vamos a ver. Puedes ver aquí que el texto de stock tiene este valor específico junto a él llamado atClient, y eso nos permite especificar que resolvamos este campo específico en el lado del cliente, ¿verdad? Y luego, cuando queremos resolverlo, cuando hay un atClient junto a él, simplemente podemos llamar a la caché para obtenerlo.
Echemos un vistazo a un ejemplo, el mismo ejemplo, nuevamente, la misma consulta de carrito, ¿verdad? Lo que sucede es que en la parte inferior, estamos invocando la consulta dentro del componente de React. Y todos conocemos eso, ya hemos revisado ese código. Pero en la parte superior, para el texto de stock, Apollo Client resolverá el texto de stock en el lado del cliente, ¿verdad? Nuevamente, getCartQuery es exactamente el mismo, pero además del texto de stock que podemos resolver en el lado del cliente, lo cual es increíble. Los campos solo locales nos permiten hacer eso. Podemos declarar tantos campos solo locales como queramos. Ahora, si podemos imaginar, si ese mismo objeto de carrito se muestra de diferentes maneras, también podemos acceder al texto de stock en todos los lugares diferentes de nuestro frontend. ¿No es increíble? Entonces, nuevamente, si quieres agregar, definir más campos del lado del cliente en el propio tipo de GraphQL, que no necesitan provenir del servidor, podemos definir campos solo locales para que puedas resolver el estado localmente, ¿verdad? En tu frontend.
Ahora este es un ejemplo, nuevamente, un ejemplo básico de lo que es la caché en memoria y cómo la estamos declarando. Nuevamente, esa caché de la que hablé en el frontend, se llama caché en memoria. Y podemos declarar un campo llamado texto de stock, si ahora queremos resolver ese texto de stock, ¿verdad? El texto de stock, podemos declararlo con el derivado at client, pero luego en el código mismo de la caché en memoria, debemos decir a qué se resolverá ese texto de stock.
Comments