Pero tengo una pregunta, Gerald, porque vimos que, en este caso, la consulta de la lista de reproducción es un poco más lenta y por lo tanto tenemos dos actualizaciones en la carga inicial, pero ¿qué pasa si la lista de reproducción, la solicitud para obtener los data para nuestra ruta de lista de reproducción es más rápida que las otras obtenciones que estamos haciendo para poblar los data en nuestra interfaz de usuario?
Esa es una gran pregunta. Así que para responder a eso, vamos a volver a esto, nuestra ruta de lista de reproducción aquí. Y para aquellos que, con un ojo agudo, probablemente han notado estos añadidos sintéticos alrededor de él. Estas directivas simplemente nos ayudan a ralentizar artificialmente partes de nuestra consulta para que podamos demostrar algunas de estas cosas. Así que en este caso aquí, vamos a, vamos a eliminar este tiempo de espera sintético para la lista de reproducción porque queremos que esto se ejecute un poco más rápido. Así que volvamos aquí y veamos qué tipo de user experience obtenemos con este cambio.
Vale, y ahora volvemos a tener una actualización en la carga inicial. Si hacemos clic en otra lista de reproducción, vamos a, vamos a confirmar que todavía tenemos el comportamiento esperado de nuestros componentes de fila interna todavía suspendiendo y siendo encapsulados por ese límite de suspense interno. Así que es realmente agradable que ahora si nuestro componente de fila, nuestra obtención de data de la lista de reproducción es rápida en el mejor de los casos, vamos a tener una actualización en la pantalla en la carga inicial. Pero si es un poco más lento y React esencialmente no puede esperar por él, entonces el peor de los casos nos va a dar dos actualizaciones en la pantalla. Y para nuestra aplicación aquí, definitivamente es el compromiso correcto en términos de número de límites de suspense y su ubicación. Pero vamos a eliminar todos los otros tiempos de espera sintéticos en nuestra aplicación aquí para que se sienta un poco más rápido. Genial. Sí, porque obviamente, sería una terrible user experience si lo enviamos a nuestros clientes. Genial para una charla, malo para una aplicación real. Así que vamos a volver aquí a cada uno de estos y vamos a simplemente eliminar cada una de esas directivas sintéticas. Y aquí vamos a ver, como recargamos esto, probablemente algo un poco más como esperamos en términos de rendimiento de carga aquí. Pero mientras cargo esto, si ves esa lista de reproducción cargándose, podemos ver que todavía está tomando un poco demasiado tiempo para mi gusto aquí. Y eso es porque he tomado algo de tiempo para averiguar, como, hay un campo lento aquí en algún lugar que simplemente está haciendo que mi consulta tarde mucho tiempo en terminar aquí. Así que esto no sería una charla de GraphQL si exploramos algunos conceptos de GraphQL para averiguar cómo podemos ayudarnos aquí para actualizar esta experiencia. Así que tenemos una nueva directiva que está casi lista en la especificación, la especificación de GraphQL, que podemos integrar con la que nos permite marcar parte de nuestra consulta como algunos campos que pueden cargarse más tarde cuando estén listos. Así que vamos a volver a la ruta de la lista de reproducción aquí. Y sin sorpresa para el ojo agudo, tenemos nuestro campo de pistas aquí que tiene un tiempo de espera sintético también. Pero si esta fuera una aplicación de producción, asumiríamos que has hecho algunas investigaciones para determinar que, hey, son estas pistas las que realmente están tomando mucho tiempo. Así que lo que realmente me gustaría en mi user experience es poder mostrar algunos de esos detalles de la lista de reproducción primero, y luego a medida que las pistas están listas y se cargan, poder mostrar esas cuando estén listas. Así que de nuevo, tenemos una nueva directiva que podemos usar que funciona en fragmentos, voy a incluir eso aquí añadiendo un fragmento en línea con defer, simplemente voy a envolver mis pistas allí con él. Y vamos a ver qué hace eso con mi aplicación aquí. Vale, así que hemos añadido una capa adicional de interfaz de usuario de carga aquí. Así que en el mejor de los casos, volvemos a tener dos estados de carga. Pero para ilustrar el peor de los casos, veamos qué pasa si los detalles de la lista de reproducción tardan un poco más.
Comments