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 →
Logická architektura11 minut čtení·Tým ExodeUI

UI State Machine: Budování deterministických rozhraní bez chyb

Zjistěte, jak vizuální stavové stroje eliminují nemožné stavy uživatelského rozhraní, zjednodušují složité interaktivní komponenty a vytvářejí deterministická rozhraní bez chyb v React.

Přímé shrnutí a definice

Core Takeaway

Stavový stroj uživatelského rozhraní je matematický model, který popisuje všechny platné stavy, které může komponenta rozhraní zaujímat, a explicitní přechody mezi těmito stavy spouštěnými událostmi uživatele nebo systémovými podmínkami. Stavové automaty odstraňují celé kategorie chyb uživatelského rozhraní tím, že znemožní „nemožné stavy“ – váš číselník načítání a zaškrtávací značka úspěchu se nemohou objevit současně, pokud váš stavový automat tuto kombinaci zakazuje.

Problémový stav stroje řeší

Většina chyb uživatelského rozhraní pochází z komponent, které se mohou dostat do logicky nemožných stavů. Klasický příklad: tlačítko pro odeslání formuláře, které nemá žádný explicitní model stavu, může být současně ve stavu „načítání“ a ve stavu „deaktivováno“ ze dvou samostatných booleovských příznaků. Stavový automat tomu brání tím, že vyžaduje, aby komponenta byla v každém okamžiku vždy v přesně jednom přesně definovaném stavu.

  • "Boolean flag hell" — isLoading, isDisabled, isError, isSuccess all konfliktní
  • Závodní podmínky, kdy rychlí uživatelé spouštějí více stavů současně
  • Chyby přechodu, kdy animace začínají z nesprávných mezipoloh
  • Kognitivní zátěž vývojáře ze sledování n × n kombinací příznaků při kontrole kódu

Základní koncepty strojů stavu

Stavové automaty se skládají z konečné sady stavů, slovníku událostí, které mohou spouštět přechody, a ochranných podmínek, které určují, zda je přechod povolen.

států

Každý stav představuje specifický stav komponenty. Příklad komponenty pro načítání dat: nečinný, načítání, úspěch, chyba, obnovování.

Události / Přechody

Události spouštějí změny stavu. "SUBMIT" převede formulář z nečinnosti do načítání. „ÚSPĚCH“ přechází od načítání k úspěchu. "ERROR" přechází z načítání do chyby.

Stráže

Podmínky, které musí být splněny pro přechod do ohně. Událost "SUBMIT" může spustit přechod nečinnosti → načítání pouze v případě, že kontrola ověření formuláře projde.

Kontext / Rozšířený stav

Pomocná data, která stroj nese (hodnoty uživatelského vstupu, chybová hlášení, načtená data) vedle názvu aktuálního stavu.

Stav strojů v ExodeUI

ExodeUI poskytuje vizuální editor stavu uzlového grafu. Stavy nakreslíte jako kruhy, spojíte je s označenými šipkami představujícími události a ke každému stavu připojíte jarní animace a změny vizuálních vlastností. Stroj je uložen v souboru .exode: v React jej načtete pomocí ExodeUICanvas a projíždíte přes vstupy a ve Swiftu přes ExodeUIController.

Fragment implementace výroby

Implementace interaktivních komponent
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)}
    />
  );
}

Často kladené otázky

Související návody a příklady

Navrhněte interaktivní UI jednou. Nasaďte stejný soubor.

Vytvářejte stavy, pružinovou fyziku a logiku vizuálně v ExodeUI a přehrávejte stejný soubor v Reactu, SwiftUI, Flutteru a dalších. Začněte zdarma.

Vyzkoušejte zdarma