Saltar al contenido

Cómo usar @ngrx/store para gestión de estado avanzada: Guía completa y prácticas recomendadas

27/04/2025
Cómo usar @ngrx/store para gestión de estado avanzada
Compartir:
Índice de Contenido

Introducción a la gestión de estado con @ngrx/store en Angular

La gestión del estado de aplicaciones Angular puede volverse compleja a medida que la aplicación crece en tamaño y funcionalidades. @ngrx/store es una biblioteca basada en Redux que facilita el manejo del estado global mediante un patrón reactivo, permitiendo una gestión avanzada y escalable.

¿Qué es @ngrx/store y por qué es importante?

@ngrx/store es una librería que implementa el patrón Redux en Angular, proporcionando una estructura predecible para gestionar el estado mediante un almacén centralizado. Esto ayuda a mantener la consistencia en toda la aplicación, facilitar el depurado y mejorar la escabilidad.

Pasos básicos para integrar @ngrx/store en tu proyecto Angular

1. Instalación

npm install @ngrx/store --save

2. Configuración del Store

En el módulo principal, importa y configura el StoreModule con los reducers correspondientes.

import { StoreModule } from @ngrx/store;
import { reducers } from ./reducers;

@NgModule({
  imports: [
    StoreModule.forRoot(reducers),
    // otros módulos
  ],
  // otras configuraciones
})
export class AppModule { }

Estructura avanzada: Uso de acciones, reducers y selectores

Para gestionar el estado de forma eficiente, es fundamental comprender y aplicar correctamente las acciones, reducers y selectores.

Acciones: cómo definir y usar

Las acciones representan los eventos que modifican el estado. Se definen usando la función createAction y pueden contener props para pasar datos.

Ejemplo de acción

import { createAction, props } from @ngrx/store;

export const agregarItem = createAction(
  [Carrito] Agregar item,
  props<{ item: string }>()
);

Reducers: cómo gestionar cambios en el estado

Los reducers son funciones puras que definen cómo el estado cambia en respuesta a las acciones. Se crean usando createReducer y on.

Quizás también te interese:  Cómo Implementar SessionStorage en Ionic: Guía Paso a Paso para Optimizar tu App

Ejemplo de reducer

import { createReducer, on } from @ngrx/store;
import { agregarItem } from ./acciones;

export const estadoInicial: string[] = [];

export const carritoReducer = createReducer(
  estadoInicial,
  on(agregarItem, (state, { item }) => [...state, item])
);


Uso de selectores para acceder al estado

Los selectores permiten acceder de forma eficiente a partes específicas del estado. Se crean usando createSelector y se usan en los componentes para obtener datos reactivos.

Ejemplo de selector

import { createSelector, createFeatureSelector } from @ngrx/store;

export const selectCarrito = createFeatureSelector(carrito);

export const selectItems = createSelector(
  selectCarrito,
  (state: string[]) => state
);

Prácticas recomendadas para un uso avanzado de @ngrx/store

  • Organiza los reducers en módulos para mantener la estructura escalable.
  • Utiliza efectos (@ngrx/effects) para gestionar operaciones asíncronas como llamadas a APIs.
  • Implementa patrones de memoización en selectores para mejorar el rendimiento.
  • Aplica la segregación del estado dividiendo el estado en segmentos lógicos y específicos.
  • Usa acciones con tipos claros y consistentes para facilitar el mantenimiento y la depuración.

Ejemplo completo de flujo con @ngrx/store

A continuación, un ejemplo práctico que integra acciones, reducers y selectores en una funcionalidad sencilla:

  1. El componente dispatcha una acción para agregar un elemento.
  2. El reducer actualiza el estado en respuesta a esa acción.
  3. El selector obtiene la lista actualizada para mostrarse en la vista.
Quizás también te interese:  Guía completa: Cómo usar ion-segment para cambiar vistas dinámicamente en tus aplicaciones Ionic

Conclusión

@ngrx/store es una herramienta poderosa para gestionar el estado avanzado en aplicaciones Angular. Al dominar su estructura y seguir las prácticas recomendadas, podrás construir aplicaciones más robustas, escalables y fáciles de mantener.

Recuerda que la clave está en mantener una estructura organizada, aprovechar los selectores y gestionar las operaciones asíncronas con efectos. ¡Implementa estas prácticas y lleva la gestión de estado de tus aplicaciones Angular al siguiente nivel!

Compartir: