Métodos de manejo de estado en React

--

React es una librería basada en componentes con un flujo de datos de una dirección, con la cuál creamos aplicaciones que cuentan con diferentes componentes, con los cuales podemos manejar el estado a nivel local o global. Es bueno hablar un poco sobre las diferentes maneras que tenemos para realizar el control del estado y conocer cuáles opciones tenemos. Por ello en este artículo pretendo compartir una aproximación a este tema de manejo del estado y algunas herramientas que podemos usar para ello.

¿Qué es el manejo de estado?

El manejo de estado es el proceso de seguimiento y actualización del estado de una aplicación. Al estado lo podemos definir como la condición actual de una aplicación, la ubicación actual del usuario, los artículos en su carrito de compras o el estado de un juego.

Diferentes maneras de manejar el estado

Hay muchas formas de manejar el estado: el enfoque más común es usar una biblioteca o librería para manejarlo. Una librería de manejo nos permite actualizar el estado de forma consistente y predecible. Ésto puede ayudar a que las aplicaciones sean más fáciles de mantener y depurar.

Beneficios

  • Mantenibilidad: permite que las aplicaciones sean más fáciles de mantener, proporcionando un espacio centralizado para almacenar y actualizar el estado. Ésto puede facilitar el seguimiento de los cambios de estado y la depuración de errores.
  • Predecible: permite que las aplicaciones sean más predecibles al proporcionar una forma coherente de almacenar y actualizar el estado. Ésto puede hacer que sea más fácil razonar sobre el estado de una aplicación y asegurarse de que los cambios en el estado se manejen correctamente.
  • Rendimiento: permite mejorar el rendimiento de las aplicaciones, almacenando en caché el estado y actualizándose sólo cuándo es necesario. Esto puede ser especialmente útil para aplicaciones con mucho estado.

Manejo del estado en React.js

Se mencionó de forma general que es el manejo del estado, hablando propiamente de React, se puede decir que manejar el estado permite un control. Guardar y actualizar el estado de un componente. Existen formas diferentes de realizar el manejo del estado en React.js.

  • Estado local – local state

El estado local es el control de estado en un componente. Esta es la forma más sencilla de administrar el estado, pero en aplicaciones grandes y robustas el manejo de estado local se convierte en una tarea compleja, pasando demasiados props en el árbol de componentes.

  • Context API

El contexto es una forma de compartir datos entre componentes sin tener que pasarlos a través del árbol de componentes. Además, nos permite solucionar un problema que pasaba en el compartir demasiadas props entre componentes, y este problema es el Prop Drilling.

El context, con la ayuda de los hooks, nos permite tener un control del estado global o para compartir datos entre componentes que no están conectados directamente.

  • Custom hooks

Los hooks son funciones, que nos permiten controlar el estado o el ciclo de vida de los componentes. Los hooks personalizados entre otras cosas, nos ayudan a ampliar la funcionalidad de React. No solo controlamos el estado, se puede realizar efectos secundarios y otras funcionalidades más.

  • Librerías de manejo del estado

Las bibliotecas o librerías que nos manejan el estado, nos brindan varios beneficios sobre el estado local:

Centralizar el manejo del estado: nos facilita el seguimiento de los cambios de estado y la depuración de errores.

Cambios de estado predecibles: Hacer predecible el manejo del estado, permite un márgen de control y decisión sobre el estado de una aplicación, para que los cambios en el estado se manejen correctamente.

Rendimiento mejorado: el rendimiento es un aspecto clave en las aplicaciones. Almacenando en caché el estado y actualizándose sólo cuando sea necesario, puede ser útil para aplicaciones que requieren mucho control del estado.

¿Cuál enfoque puedo usar?

El mejor enfoque, como en la creación de aplicaciones dependerá de las necesidades específicas de la aplicación. Si es una aplicación pequeña o simple, es posible que con solo usar el estado local, se pueda suplir la necesidad.

Sin embargo, en una aplicación grande o compleja, se recomienda utilizar una biblioteca de administración de estado. Esto ayuda a que la aplicación sea más mantenible, predecible y de mayor rendimiento.

Hay varias consideraciones que tenemos en cuenta cuando creamos aplicaciones, y es bueno realizar el análisis previo para estar más seguros de que podríamos usar para evitarnos una refactorización o incluso rehacer nuestra aplicación con otra herramienta. Existen casos particulares que a veces nos lleva a hacerlo, pero lo ideal es evitarlo.

  • El tamaño y complejidad de la aplicación

Maneja el estado local con los hooks como useState o useReducer, pueden ser la solución perfecta para manejar el estado local en aplicaciones pequeñas y para un manejo más global es posible usar el hook de useContext o una librería para una aplicación más grande.

  • Experiencia del equipo con el manejo del estado

Si el equipo de trabajo no conoce sobre alguna herramienta para manejar el estado, es bueno comenzar con un enfoque simple, como el estado local. Una vez que el equipo tenga más experiencia, y vaya adquiriendo los conocimientos; se puede considerar usar un enfoque más complejo, como una librería.

  • Necesidades específicas de la aplicación

Algunas aplicaciones tienen necesidades específicas que requieren un enfoque de manejo de estado particular. Por ejemplo, si la aplicación necesita tener un alto rendimiento, es posible que se requiera una librería diseñada para esto.

La mejor manera de elegir un enfoque es experimentar y ver qué funciona mejor para la aplicación.

  • ¿Qué tipo de información voy a manejar y quiero almacenar?

Comprender qué tipo de información se debe almacenar y cómo la vamos a controlar, incluso cuando pensamos en su persistencia en la aplicación, nos conduce a la pregunta:

  • ¿Mi aplicación necesita saber sobre ésto?

Una vez que sabemos el tipo de datos que tenemos, podemos decidir la mejor manera de controlarlos. Algunos de ellos son por ejemplo:

  • Estado del servidor o datos de la API (obtención de datos): almacenamiento global

Controlar el estado del servidor o realizar diferentes peticiones y llamados de apis, es algo con lo que constantemente tenemos que lidiar. La obtención y actualización de los datos del servidor sucede todo el tiempo.

Para almacenar en caché los datos en el lado del cliente, el almacenamiento global es uno de los estados en los que pensamos.

Conclusión

El manejo del estado en React depende de las necesidades específicas de la aplicación. Para aplicaciones pequeñas, el estado local puede ser suficiente. Para aplicaciones más grandes, puede ser necesario un contexto o una librería para ayudarnos a hacer la tarea de controlar el estado de una forma más eficiente.

Así, que es bueno que se pueda probar la herramienta y se analice, cuál opción funciona para lo que necesito -y sobre todo que no me lleve a una curva de aprendizaje-, que requiera más tiempo para usar una herramienta que en lugar de ayudarme, me está incluyendo una problemática más .

--

--