Así que echemos un vistazo a lo que GraphQL podría hacer para ayudarnos aquí. Primero, vamos a profundizar un poco en los fragments y hablar sobre qué son. Para aquellos que no están familiarizados con GraphQL, los fragments, los fragments son esencialmente unidades reutilizables y son un subconjunto de campos que nos permiten dividir los datos complicados de nuestra aplicación en partes más pequeñas. Esto puede ser realmente útil si deseas combinar muchos componentes de UI juntos en una única obtención de datos donde cada uno de esos fragments define los requisitos de datos para un componente.
Y así es como se ve sintácticamente. En la parte inferior, ves nuestra definición de fragment, que incluye los campos que queremos incluir como parte de ese fragment. En este caso, es ese campo de reviews que ves allí. Podemos incluir ese fragment en nuestra consulta usando esa sintaxis de spread que ves arriba. Esto solo asegura que los campos en ese fragment se obtengan como parte de nuestra consulta.
Y aquí es cómo esa consulta y el fragment que contiene pueden mapearse a los componentes que estamos renderizando. Aquí podemos ver el título y la URL de los medios donde se renderizan y las reviews que se renderizan debajo. Y nuevamente, al punto que Gerald hizo sobre cómo los fragments pueden permitirte delimitar esas necesidades de datos de un componente específico. Aquí es donde veremos nuestro componente de reviews de productos que está renderizando las estrellas. Simplemente declarando ese requisito de datos a través del uso de un fragment y el hook use fragment de Apollo client.
Así que, ya sabes, en este caso, todos los productos se renderizan debajo y todas las reviews se renderizan debajo. Así que, ya sabes, en este caso, todos los productos están obteniendo todos los datos que esta UI necesita. Pero las reviews de productos están renderizando los datos de reviews usando ese hook use fragment. Y vale la pena señalar que los fragments no son suficientes por sí solos para mejorar la experiencia del usuario aquí, porque aunque nos dan una forma de incluir las reviews de productos, los datos de los componentes de reviews de productos en nuestra consulta, todavía estamos esperando que todos los campos se resuelvan antes de poder renderizar nuestra página. Así que vamos a recurrir a otra cosa que GraphQL nos da aquí para resolver este problema, y eso es la directiva defer.
¿Qué es la directiva defer? Defer nos permite marcar un conjunto de campos como diferidos dentro de nuestra consulta. Todavía obtenemos el beneficio de una única solicitud de red, pero defer le dice a nuestro servidor GraphQL que transmita esos campos diferidos más tarde a través de una respuesta de múltiples partes. Y esto nos da la capacidad de transmitir datos de manera incremental. Esto realmente puede proporcionar una gran experiencia para situaciones donde algunos campos tardan mucho más en resolverse que otros. Y así es como se ve en nuestra consulta. Esencialmente nos permite anotar ese fragment de campos de producto con una directiva defer para indicar que todos los campos dentro de campos de producto pueden transmitirse en un momento posterior.
Así que hemos aprendido sobre estas utilidades, pero ¿cómo las usamos realmente en nuestra aplicación? Así que vamos a hacerlo y vamos a recorrer una demostración de esto en acción. Solo quiero señalar antes de avanzar demasiado que lo que estamos a punto de mostrarles aquí es altamente experimental. Aún no se ha lanzado en Apollo Client, pero estamos trabajando en esta funcionalidad y queremos agregarla a una versión futura. Así que solo queríamos poder emocionarnos sobre el futuro con ustedes sobre las posibilidades que usar GraphQL en la arquitectura de componentes del servidor de React proporciona. Así que vamos a profundizar.
Comments