Volver

Máquinas de Estado en React

Las máquinas de estado son un patrón de diseño que modela el comportamiento de un componente como un conjunto finito de estados posibles y las transiciones entre ellos.

Concepto básico

Imagina un semáforo: solo puede estar en “rojo”, “amarillo” o “verde”, y sigue reglas específicas para cambiar de un color a otro. Esto es una máquina de estado finita.

En React, este concepto te ayuda a gestionar lógica compleja de UI de forma predecible y mantenible.

¿Por qué usarlas?

Cuando tu componente tiene múltiples estados interdependientes (cargando, error, éxito, etc.), manejarlos con simples useState puede volverse caótico:

const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState(null);
const [data, setData] = useState(null);

Este enfoque permite estados imposibles como “cargando con error” o “éxito sin datos”.

Ejemplo simple con useReducer

Puedes implementar una máquina de estado básica con useReducer:

const initialState = { status: 'idle', data: null, error: null };

function reducer(state, action) {
  switch (action.type) {
    case 'FETCH':
      return { status: 'loading', data: null, error: null };
    case 'SUCCESS':
      return { status: 'success', data: action.payload, error: null };
    case 'ERROR':
      return { status: 'error', data: null, error: action.payload };
    default:
      return state;
  }
}

XState – La biblioteca más popular

Para casos complejos, existe XState, una biblioteca que implementa máquinas de estado formales:

import { createMachine } from 'xstate';

const toggleMachine = createMachine({
  id: 'toggle',
  initial: 'inactive',
  states: {
    inactive: {
      on: { TOGGLE: 'active' }
    },
    active: {
      on: { TOGGLE: 'inactive' }
    }
  }
});

Ventajas principales

  • Predecibilidad: Solo ciertos estados y transiciones son posibles
  • Visualización: Puedes diagramar tu lógica claramente
  • Debugging: Más fácil entender qué salió mal
  • Mantenibilidad: Cambios futuros son más seguros

Las máquinas de estado brillan especialmente en formularios multi-paso, flujos de autenticación, o cualquier UI con comportamiento complejo y bien definido.

Avatar

Autor

Elan Francisco P. Asprilla
Desarrollador Frontend

Artículos relacionados

Cómo descargar Formularios/Leads en Wagtail (Racafe)

Este artículo documenta el proceso para...

Bloque imagen (Palmas)

Es un banner simple que se encarga de mostrar...

¿Cómo mandar información de un archivo a otro PHP WordPress?

En algunas ocasiones se requiere enviar...

Plugin personalizado post en archivo excel WP (Hidrotecno)

Este artículo es una continuación Formulario de...