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 →
Logisk arkitektur11 min läst·Av ExodeUI-teamet

State Machine UI: Bygga deterministiska, buggfria gränssnitt

Lär dig hur visuella tillståndsmaskiner eliminerar omöjliga UI-tillstånd, förenklar komplexa interaktiva komponenter och skapar deterministiska, buggfria gränssnitt i React.

Direkt sammanfattning & definition

Core Takeaway

En UI-tillståndsmaskin är en matematisk modell som beskriver alla giltiga tillstånd som en gränssnittskomponent kan uppta, och de explicita övergångarna mellan dessa tillstånd som utlöses av användarhändelser eller systemförhållanden. Statliga maskiner eliminerar hela kategorier av UI-buggar genom att göra "omöjliga tillstånd omöjliga" - din laddningssnurra och framgångsbocken kan inte båda visas samtidigt om din tillståndsmaskin förbjuder den kombinationen.

Problemtillståndsmaskiner löser

De flesta UI-buggar kommer från komponenter som kan gå in i logiskt omöjliga tillstånd. Ett klassiskt exempel: en knapp för inlämning av formulär som inte har någon explicit tillståndsmodell kan samtidigt vara i ett "laddningsläge" och ett "inaktiverat" tillstånd från två separata booleska flaggor. En tillståndsmaskin förhindrar detta genom att kräva att komponenten alltid är i exakt ett väldefinierat tillstånd när som helst.

  • "Boolesk flagga helvete" — är Laddar, är Disabled, isError, isSuccess alla motstridiga
  • Tävlingsförhållanden där snabba användare utlöser flera tillstånd samtidigt
  • Övergångsbuggar där animationer startar från felaktiga mellanpositioner
  • Kognitiv belastning för utvecklare från spårning av n × n flaggkombinationer i kodgranskning

Kärntillståndsmaskinkoncept

Tillståndsmaskiner består av en ändlig uppsättning tillstånd, en vokabulär av händelser som kan utlösa övergångar och skyddsförhållanden som avgör om en övergång är tillåten.

stater

Varje tillstånd representerar ett specifikt tillstånd för komponenten. Exempel på en datahämtningskomponent: inaktiv, laddning, framgång, fel, uppdatering.

Händelser / Övergångar

Händelser utlöser tillståndsändringar. "SUBMIT" överför ett formulär från inaktiv till laddning. "SUCCESS" övergår från laddning till framgång. "ERROR" övergår från laddning till fel.

Vakter

Förutsättningar som måste vara sanna för en övergång till brand. En "SUBMIT"-händelse kan bara utlösa inaktiv → laddningsövergång om formulärvalideringsvakten passerar.

Kontext/Utökat tillstånd

Hjälpdata som maskinen bär (användarinmatningsvärden, felmeddelanden, laddade data) tillsammans med det aktuella tillståndsnamnet.

Statliga maskiner i ExodeUI

ExodeUI tillhandahåller en visuell nodgraftillståndsmaskinredigerare. Du ritar tillstånd som cirklar, kopplar ihop dem med märkta pilar som representerar händelser och bifogar våranimationer och visuella egenskapsändringar till varje tillstånd. Maskinen sparas i filen .exode: i React laddar du den med ExodeUICanvas och kör den genom ingångar, och i Swift genom ExodeUIController.

Produktionsimplementeringsutdrag

Interaktiv komponentimplementering
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)}
    />
  );
}

Vanliga frågor

Relaterade guider och exempel

Designa interaktivt UI en gång. Leverera samma fil.

Bygg tillstånd, fjäderfysik och logik visuellt i ExodeUI och spela samma fil i React, SwiftUI, Flutter med flera. Kom igång gratis.

Prova gratis