Implementación de Inmutabilidad con ImmutableJS en Proyectos JavaScript
Clase 18 de 22 • Curso Profesional de React.js y Redux
Resumen
¿Cómo asegurar la inmutabilidad con ImmutableJS?
En el uso de tecnologías y librerías modernas, la inmutabilidad es un concepto crucial, sobre todo cuando trabajamos con frameworks como React. Hoy exploraremos cómo podemos implementar este principio usando ImmutableJS. Hacemos esto para garantizar un rendimiento óptimo y mantener la consistencia en nuestras interfaces de usuario (UI) al gestionar cambios en el estado de la aplicación.
¿Qué es ImmutableJS y cómo se instala?
ImmutableJS es una librería de JavaScript que se encarga de manejar estados de manera inmutable. Esto significa que una vez creado un estado, ya no puede ser modificado; para cambiarlo, se genera uno nuevo. Este enfoque asegura que la UI se renderice correctamente con cada actualización de datos, evitando errores relacionados con estados previamente modificados de maneras inesperadas.
Para instalar ImmutableJS en tu proyecto, sigue estos pasos:
-
Abre el terminal en tu editor de código.
-
Usa NPM para instalar la librería:
npm install immutable
-
Después de la instalación, puedes verificar más sobre las estructuras de datos utilizadas por ImmutableJS como 'set', 'map' y 'list' en su documentación oficial.
¿Cómo implementar estructuras de datos inmutables?
ImmutableJS utiliza una variedad de estructuras de datos especializadas. En nuestro caso, transformamos un estado inicial de la aplicación usando el método fromJS
que convierte objetos y arreglos de JavaScript a estructuras de datos de Immutable.
import { fromJS } from 'immutable';
const initialState = fromJS({
pokemons: [],
});
¿Cómo trabajar con reducers y métodos de modificación?
Al trabajar con reducers, en vez de usar objetos o arreglos planos, puedes emplear métodos como setIn
para modificar los datos de manera inmutable.
Modificando el estado con setIn
Imagina que quieres modificar la lista de Pokémon:
state.setIn(['pokemons'], fromJS(newPokemonList));
Este ejemplo ilustra cómo usar setIn
para acceder a un nivel específico dentro del estado y actualizarlo con una nueva lista convertida nuevamente en un formato inmutable usando fromJS
.
¿Cómo acceder y encontrar índices con Get y FindIndex?
A la hora de manipular el estado, el método get
es esencial para acceder a propiedades específicas. Cuando se desea encontrar un índice, FindIndex
nos ofrece una búsqueda eficiente dentro de estas estructuras.
const index = state.get('pokemons').findIndex(pokemon => pokemon.get('id') === action.payload.id);
Este fragmento demuestra cómo encontrar un Pokémon específico en la lista utilizando findIndex
junto con get
.
¿Cómo devolver las estructuras a objetos planos?
En ocasiones, es necesario convertir los datos inmutables de regreso a objetos planos para facilitar su manejo en la aplicación:
import { toJS } from 'immutable';
// Convertir de estado inmutable a objeto JavaScript plano.
const plainPokemonList = state.get('pokemons').toJS();
¿Cómo verificar que el estado es realmente inmutable?
Para verificar que nuestro estado es inmutable, podemos hacer log en la consola y examinar estas estructuras:
console.log(state.toJS());
Esto te permitirá ver cómo cada parte del estado usa estructuras como mapas y listas propias de ImmutableJS.
Incorporar inmutabilidad a través de ImmutableJS puede parecer un paso adicional, pero su capacidad para prevenir errores y garantizar un manejo más eficiente del estado puede mejorar significativamente la integridad y rendimiento de tu aplicación. ¡Continúa aprendiendo y experimentando para aprovechar al máximo estas herramientas!