Deja de abusar del manejo de estado del cliente

Rate this content
Bookmark

Muchas aplicaciones de React utilizan soluciones de manejo de estado como Redux o Mobx y las utilizan principalmente para el estado del servidor como 'isLoading', 'isError', etc. Necesitamos dejar de mezclar el estado del servidor y el estado del cliente. No me malinterpretes, el estado del cliente es importante, pero el 70% del estado es en realidad un estado del servidor. En esta charla demostraré cómo podemos encapsular el estado del servidor utilizando nuestro propio hook personalizado o utilizando una solución (perfecta) como react-query.

FAQ

Nir tiene 34 años, es de Israel y ha estado construyendo aplicaciones web desde su juventud. Comenzó con un sitio web de fans de Pokémon en Israel y posteriormente obtuvo una licenciatura en Ciencias de la Computación de la Universidad Hebrea de Jerusalén. Ha trabajado como desarrollador full-stack en Intel y como líder de equipo de frontend en Curv, una startup de blockchain adquirida por PayPal. Actualmente, dirige una empresa de consultoría en desarrollo de aplicaciones web.

Nir dirige una empresa de consultoría que desarrolla aplicaciones web en el mundo de la web 2.0 y la web 3.0.

Nir utiliza herramientas como Redux y Morbix para la gestión del estado en las aplicaciones de React, y ha explorado el uso de useReducer por razones de simplicidad, que es muy similar a los reducers de Redux.

Nir utiliza un enfoque de reducer para manejar diferentes estados de la aplicación, como carga, error y éxito. Implementa esto a través de un hook personalizado que utiliza un reducer genérico para manejar los distintos estados de una petición asíncrona.

Nir recomienda usar React Query para manejar estados de servidor como obtener datos, almacenar en caché y cargar. Según él, React Query simplifica la gestión de la capa de API y es muy útil en aplicaciones de React.

Nir implementa mecanismos de caché para optimizar el rendimiento de las aplicaciones, permitiendo que los datos se obtengan una sola vez y se reutilicen sin necesidad de nuevas peticiones, a menos que los datos no estén actualizados o se solicite explícitamente.

Nir Parisian
Nir Parisian
21 min
21 Jun, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla discute el abuso del manejo de estado y el uso de React Query para el manejo de API en aplicaciones de React. El orador demuestra la implementación de indicadores de carga, hooks personalizados, mecanismos de almacenamiento en caché y presenta React Query como una herramienta poderosa para obtener, almacenar en caché y cargar datos. La conclusión enfatiza que React Query simplifica el manejo de API sin la necesidad de herramientas complejas de manejo de estado como Redux o MobX.

1. Introducción

Short description:

Hola a todos. Mi nombre es Nir. Tengo 34 años y soy de Israel, casado con una mujer y padre de tres maravillosas niñas. He construido aplicaciones web desde que era niño. Actualmente dirijo una empresa de consultoría en desarrollo de aplicaciones web, tanto en el mundo de la web 2.0 como en el mundo de la web 3.0.

Mi nombre es Nir. Tengo 34 años y soy de Israel, casado con una mujer y padre de tres maravillosas niñas, Baar y Adas. He construido aplicaciones web desde que era niño. Mi primer sitio web fue el sitio web más grande de fans de Pokémon en Israel y fue un gran proyecto. Desde entonces, obtuve mi licenciatura en Ciencias de la Computación en la Universidad Hebrea de Jerusalén. Trabajé como desarrollador full-stack en Intel durante un par de años. Después fui líder de equipo de frontend en Curv, una startup de blockchain que fue adquirida por PayPal. Actualmente dirijo una empresa de consultoría en desarrollo de aplicaciones web, tanto en el mundo de la web 2.0 con el que todos están familiarizados, como en el mundo de la web 3.0.

2. Abuso común de la gestión del estado

Short description:

Hablemos sobre el abuso común de la gestión del estado. Elegimos nuestra herramienta favorita de gestión del estado, conectamos los componentes a la funcionalidad de la API backend y comenzamos a utilizar la maravilla de la gestión del estado. Creé una aplicación de React, declaré una función de API llamada fetchPokemon y utilicé un servicio de API de Pokémon para obtener los datos relevantes. Agregué una demora de dos segundos, obtuve los datos e implementé la interfaz de usuario para mostrar los datos de Pokémon y un botón para obtener un Pokémon aleatorio. Por último, agregué un poco de estilo a la interfaz de usuario.

Basta de hablar de mí, hablemos sobre el abuso común de la gestión del estado. Todos hemos estado allí, comenzando una aplicación de React, eligiendo nuestra herramienta favorita de gestión del estado, como Redux o Morbix, u otras muchas disponibles, y conectando nuestros componentes utilizando estas herramientas con la funcionalidad de la API backend y comenzando a utilizar la maravilla de la gestión del estado.

Veámoslo en acción. He creado una sencilla aplicación de React utilizando Code Sandbox, y comenzaré declarando una función de API llamada fetchPokemon, que recibirá como parámetro el nombre del Pokémon, y utilizaremos un servicio de API de Pokémon para obtener los datos relevantes del Pokémon. Lo envolví con una promesa para asegurarnos de que haya una demora en la respuesta y simular un comportamiento común de las funciones de API. Así que hay un setTimeout, y lo configuré para una demora de dos segundos.

Ahora realizaré la obtención de los datos. Tenemos el nombre del Pokémon, manejamos la respuesta, que está en formato JSON, así que utilizaré el JSON y devolveré los datos. Genial. Muy bien. Añadamos la demora de dos segundos de la que hablé, y ahora puedo llamar al punto final en la interfaz de usuario, declarando el estado PokemonData y setPokemonData utilizando el hook useState, y creando una función fetch random Pokemon para que la aplicación no sea aburrida.

Así que elegiré entre tres Pokémon comunes, Pikachu, Charizard y Squirtle. Utilizaremos una lógica aleatoria utilizando la biblioteca math, multiplicando math random por la longitud del array menos 1 y redondeándolo. Y ahora puedo utilizarlo. Llamo a fetchPokemon con el nombre del Pokémon elegido. Genial. Devuelvo los datos. Muy bien. Y ahora viene la mejor parte, la interfaz de usuario. Así que declararé un contenedor div y mostraré los datos del Pokémon en un div y crearé un botón para utilizar la función fetch. En el div, mostraré el nombre del Pokémon, así como su imagen utilizando los sprites de los datos que obtenemos de la API del servicio. Lo pondré en el atributo source de la imagen. ¡Y genial! Volvamos al botón. Adjuntaré la función fetch random Pokemon que implementamos. Y agreguemos un poco de texto. Y agreguemos un texto alternativo para eliminar la molesta advertencia de Code Sandbox. Añadamos un pequeño error tipográfico aquí. Y probémoslo. ¡Genial! Tenemos a Squidward. Ahora agreguemos un poco de estilo, solo para mover el texto un poco hacia arriba.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Vue.js London Live 2021Vue.js London Live 2021
34 min
Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Top Content
Cuando pensamos en Vuex, Pinia, o tiendas en general, a menudo pensamos en la gestión de estado y los patrones Flux, pero no solo las tiendas no siempre siguen el patrón Flux, ¡hay mucho más en las tiendas que las hace valer la pena usar! Plugins, Devtools, renderizado en el lado del servidor, integraciones TypeScript... Vamos a sumergirnos en todo más allá de la gestión de estado con Pinia con ejemplos prácticos sobre plugins y Devtools para sacar el máximo provecho de tus tiendas.
Uso efectivo de useEffect
React Advanced Conference 2022React Advanced Conference 2022
30 min
Uso efectivo de useEffect
Top Content
¿Puede useEffect afectar negativamente a tu base de código? Desde la obtención de datos hasta la lucha con las APIs imperativas, los efectos secundarios son una de las mayores fuentes de frustración en el desarrollo de aplicaciones web. Y seamos honestos, poner todo en ganchos useEffect no ayuda mucho. En esta charla, desmitificaremos el gancho useEffect y obtendremos una mejor comprensión de cuándo (y cuándo no) usarlo, así como descubriremos cómo los efectos declarativos pueden hacer que la gestión de efectos sea más mantenible incluso en las aplicaciones React más complejas.
React Query: ¡Es hora de romper con tu "Estado Global"!
React Summit Remote Edition 2020React Summit Remote Edition 2020
30 min
React Query: ¡Es hora de romper con tu "Estado Global"!
Top Content
Una cantidad creciente de datos en nuestras aplicaciones React proviene de fuentes remotas y asíncronas y, aún peor, continúa disfrazándose como "estado global". En esta charla, obtendrás información sobre por qué la mayoría de tu "estado global" en realidad no es un estado en absoluto y cómo React Query puede ayudarte a buscar, almacenar en caché y gestionar tus datos asíncronos con una fracción del esfuerzo y el código al que estás acostumbrado.
Los Átomos de Jotai Son Simplemente Funciones
React Day Berlin 2022React Day Berlin 2022
22 min
Los Átomos de Jotai Son Simplemente Funciones
Top Content
Jotai es una biblioteca de gestión de estado. La hemos estado desarrollando principalmente para React, pero conceptualmente no está vinculada a React. En esta charla, veremos cómo funcionan los átomos de Jotai y aprenderemos sobre el modelo mental que deberíamos tener. Los átomos son una abstracción agnóstica del marco para representar estados, y básicamente son solo funciones. Comprender la abstracción de átomo ayudará a diseñar e implementar estados en sus aplicaciones con Jotai
Una Guía Práctica para Migrar a Componentes de Servidor
React Advanced Conference 2023React Advanced Conference 2023
28 min
Una Guía Práctica para Migrar a Componentes de Servidor
Los Componentes de Servidor son la nueva gran cosa, pero hasta ahora gran parte del discurso a su alrededor ha sido abstracto. Cambiemos eso. Esta charla se centrará en el lado práctico de las cosas, proporcionando un mapa de ruta para navegar el viaje de migración. Comenzando desde una aplicación que utiliza el antiguo enrutador de páginas de Next.js y React Query, desglosaremos este viaje en un conjunto de pasos accionables e incrementales, deteniéndonos solo cuando tengamos algo que se pueda enviar y que sea claramente superior a lo que comenzamos. También discutiremos los próximos pasos y estrategias para adoptar gradualmente más aspectos de este paradigma transformador.
Anunciando Starbeam: Reactividad Universal
JSNation 2022JSNation 2022
27 min
Anunciando Starbeam: Reactividad Universal
Starbeam es una biblioteca para construir sistemas de datos reactivos que se integran nativamente con frameworks de UI como React, Vue, Svelte o Ember. En esta charla, Yehuda anunciará Starbeam. Cubrirá la motivación para la biblioteca, y luego entrará en los detalles de cómo funciona la reactividad en Starbeam, y lo más importante, cómo puedes usarlo para construir bibliotecas reactivas hoy que funcionarán nativamente en cualquier framework de UI. Si eres realmente aventurero, también hablará sobre cómo podrías usar Starbeam en una aplicación existente utilizando el framework de tu elección y hablará sobre los beneficios de usar Starbeam como el sistema de gestión de estado en tu aplicación.

Workshops on related topic

Repensando el Estado del Servidor con React Query
React Summit 2020React Summit 2020
96 min
Repensando el Estado del Servidor con React Query
Top Content
Featured Workshop
Tanner Linsley
Tanner Linsley
La distinción entre el estado del servidor y el estado del cliente en nuestras aplicaciones puede ser un concepto nuevo para algunos, pero es muy importante entenderlo cuando se entrega una experiencia de usuario de primera calidad. El estado del servidor viene con problemas únicos que a menudo se cuelan en nuestras aplicaciones sorpresa como:
- Compartir datos entre aplicaciones- Caché y Persistencia- Deduplicación de Solicitudes- Actualizaciones en segundo plano- Gestión de Datos "Obsoletos"- Paginación y Recuperación Incremental- Memoria y Recolección de Basura- Actualizaciones Optimistas
Los gestores tradicionales de "Estado Global" pretenden que estos desafíos no existen y esto finalmente resulta en que los desarrolladores construyan sus propios intentos sobre la marcha para mitigarlos.
En esta masterclass, construiremos una aplicación que expone estos problemas, nos permite entenderlos mejor, y finalmente los convierte de desafíos a características usando una biblioteca diseñada para gestionar el estado del servidor llamada React Query.
Al final de la masterclass, tendrás una mejor comprensión del estado del servidor, el estado del cliente, la sincronización de datos asíncronos (un bocado, lo sé), y React Query.
Gestión del estado en React con Context y Hooks
React Summit Remote Edition 2021React Summit Remote Edition 2021
71 min
Gestión del estado en React con Context y Hooks
WorkshopFree
Roy Derks
Roy Derks
Mucho ha cambiado en el mundo de la gestión del estado en React en los últimos años. Donde Redux solía ser la principal biblioteca para esto, la introducción de las API de Contexto y Hooks de React ha revolucionado las cosas. Ya no necesitas bibliotecas externas para manejar tanto el estado del componente como el estado global en tus aplicaciones. En este masterclass aprenderás los diferentes enfoques para la gestión del estado en la era post-Redux de React, ¡todos basados en Hooks! Y como bonificación, exploraremos dos próximas bibliotecas de gestión del estado en el ecosistema de React.