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 →
Architettura logica11 minuti di lettura·Dal team ExodeUI

Interfaccia utente della macchina a stati: creazione di interfacce deterministiche e prive di bug

Scopri come le macchine a stati visivi eliminano stati impossibili dell'interfaccia utente, semplificano componenti interattivi complessi e creano interfacce deterministiche e prive di bug in React.

Sintesi e definizione

Punto chiave

Una macchina a stati dell'interfaccia utente è un modello matematico che descrive tutti gli stati validi che un componente dell'interfaccia può occupare e le transizioni esplicite tra tali stati attivate da eventi dell'utente o condizioni del sistema. Le macchine a stati eliminano intere categorie di bug dell'interfaccia utente rendendo impossibili gli "stati impossibili": lo spinner di caricamento e il segno di spunta di successo non possono apparire entrambi contemporaneamente se la macchina a stati vieta tale combinazione.

Il problema risolto dalle macchine a stati

La maggior parte dei bug dell'interfaccia utente provengono da componenti che possono entrare in stati logicamente impossibili. Un classico esempio: un pulsante di invio di un modulo che non ha un modello di stato esplicito può trovarsi contemporaneamente in uno stato di "caricamento" e in uno stato "disabilitato" da due flag booleani separati. Una macchina a stati impedisce ciò richiedendo che il componente sia sempre esattamente in uno stato ben definito in qualsiasi momento.

  • "Boolean flag hell" — isLoading, isDisabled, isError, isSuccess sono tutti in conflitto
  • Condizioni di gara in cui gli utenti veloci attivano più stati contemporaneamente
  • Bug di transizione in cui le animazioni iniziano da posizioni intermedie errate
  • Carico cognitivo dello sviluppatore derivante dal monitoraggio di combinazioni di flag n × n nella revisione del codice

Concetti fondamentali della macchina a stati

Le macchine a stati sono costituite da un insieme finito di stati, un vocabolario di eventi che possono innescare transizioni e condizioni di guardia che determinano se una transizione è consentita.

Stati

Ciascuno stato rappresenta una condizione specifica del componente. Esempio di un componente di recupero dati: inattivo, caricamento, successo, errore, aggiornamento.

Eventi/Transizioni

Gli eventi innescano cambiamenti di stato. "INVIA" ​​fa passare un modulo dallo stato inattivo al caricamento. "SUCCESS" passa dal caricamento al successo. "ERROR" passa dal caricamento all'errore.

Guardie

Condizioni che devono essere vere per una transizione al fuoco. Un evento "SUBMIT" può attivare la transizione inattivo → caricamento solo se passa la guardia di convalida del modulo.

Contesto/Stato esteso

Dati ausiliari trasportati dalla macchina (valori immessi dall'utente, messaggi di errore, dati caricati) insieme al nome dello stato corrente.

Macchine a stati in ExodeUI

ExodeUI fornisce un editor visivo della macchina a stati del grafico del nodo. Disegni gli stati come cerchi, li colleghi con frecce etichettate che rappresentano gli eventi e alleghi animazioni primaverili e modifiche alle proprietà visive a ciascuno stato. La macchina viene salvata nel file .exode: in React la carichi con ExodeUICanvas e la guidi tramite input, e in Swift tramite ExodeUIController.

Estratto di implementazione in produzione

Implementazione del componente interattivo
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)}
    />
  );
}

Domande frequenti

Guide ed esempi correlati

Progetta la UI interattiva una volta. Pubblica lo stesso file.

Crea stati, fisica delle molle e logica in modo visivo in ExodeUI e riproduci lo stesso file in React, SwiftUI, Flutter e altro. Inizia gratis.

Provalo gratis