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

Contactos (Palmas)

Componentes que muestra imagen de ubicación...

¿Cómo saber cuando un elemento es visible en viewport (con...

Aquí vamos a ver cómo detectar cuando un...

Bloque imagen (Palmas)

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