Skip to main content
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →
Arquitectura lógica11 minutos de lectura·Por el equipo de ExodeUI

Interfaz de usuario de máquina de estado: creación de interfaces deterministas y libres de errores

Descubra cómo las máquinas de estados visuales eliminan estados imposibles de la interfaz de usuario, simplifican componentes interactivos complejos y crean interfaces deterministas y sin errores en React.

Resumen directo y definición

Idea clave

Una máquina de estados de la interfaz de usuario es un modelo matemático que describe todos los estados válidos que puede ocupar un componente de la interfaz y las transiciones explícitas entre esos estados desencadenadas por eventos del usuario o condiciones del sistema. Las máquinas de estados eliminan categorías enteras de errores de la interfaz de usuario al hacer que los "estados imposibles sean imposibles": el control giratorio de carga y la marca de verificación de éxito no pueden aparecer simultáneamente si su máquina de estados prohíbe esa combinación.

El problema que resuelven las máquinas de estados

La mayoría de los errores de la interfaz de usuario se originan en componentes que pueden entrar en estados lógicamente imposibles. Un ejemplo clásico: un botón de envío de formulario que no tiene un modelo de estado explícito puede estar simultáneamente en un estado de "carga" y en un estado "deshabilitado" desde dos indicadores booleanos separados. Una máquina de estados evita esto al exigir que el componente esté siempre exactamente en un estado bien definido en cualquier momento.

  • "Infierno de banderas booleanas": isLoading, isDisabled, isError, isSuccess, todos en conflicto
  • Condiciones de carrera donde los usuarios rápidos activan múltiples estados simultáneamente
  • Errores de transición donde las animaciones comienzan desde posiciones intermedias incorrectas
  • Carga cognitiva del desarrollador a partir del seguimiento de combinaciones de indicadores n × n en la revisión de código

Conceptos básicos de la máquina de estados

Las máquinas de estados constan de un conjunto finito de estados, un vocabulario de eventos que pueden desencadenar transiciones y condiciones de protección que determinan si se permite una transición.

Estados

Cada estado representa una condición específica del componente. Ejemplo de un componente de obtención de datos: inactivo, cargando, exitoso, error, actualizando.

Eventos / Transiciones

Los eventos desencadenan cambios de estado. "ENVIAR" hace la transición de un formulario de inactivo a cargando. "ÉXITO" pasa de la carga al éxito. "ERROR" pasa de carga a error.

guardias

Condiciones que deben cumplirse para una transición al fuego. Un evento "ENVIAR" solo puede desencadenar la transición inactivo → cargando si pasa la protección de validación del formulario.

Contexto / Estado extendido

Datos auxiliares que transporta la máquina (valores de entrada del usuario, mensajes de error, datos cargados) junto con el nombre del estado actual.

Máquinas de estados en ExodeUI

ExodeUI proporciona un editor visual de máquina de estado de gráfico de nodos. Dibujas estados como círculos, los conectas con flechas etiquetadas que representan eventos y adjuntas animaciones de primavera y cambios de propiedades visuales a cada estado. La máquina se guarda en el archivo .exode: en React la cargas con ExodeUICanvas y la manejas a través de entradas, y en Swift a través de ExodeUIController.

Fragmento de implementación en producción

Implementación del componente interactivo
import { ExodeUICanvas } from 'exodeui';

// Springs, states and timing live in the .exode file (designed in the
// editor). Your code passes inputs in and hears events back.
export function AuthFlow() {
  return (
    <ExodeUICanvas
      src="/auth_flow.bexode"
      onTrigger={(name) => console.log('ExodeUI event:', name)}
    />
  );
}

Preguntas frecuentes

Guías y ejemplos relacionados

Diseña la UI interactiva una vez. Publica el mismo archivo.

Crea estados, física de muelles y lógica de forma visual en ExodeUI, y reproduce el mismo archivo en React, SwiftUI, Flutter y más. Empieza gratis.

Pruébalo gratis