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·Af ExodeUI-teamet

State Machine UI: Opbygning af deterministiske, fejlfri grænseflader

Lær, hvordan visuelle tilstandsmaskiner eliminerer umulige UI-tilstande, forenkler komplekse interaktive komponenter og skaber deterministiske, fejlfri grænseflader i React.

Direkte Resumé & Definition

Core Takeaway

En UI-tilstandsmaskine er en matematisk model, der beskriver alle gyldige tilstande, en grænsefladekomponent kan optage, og de eksplicitte overgange mellem disse tilstande udløst af brugerhændelser eller systemforhold. Statsmaskiner eliminerer hele kategorier af UI-fejl ved at gøre "umulige tilstande umulige" - din loading-spinner og succes-flueben kan ikke begge vises samtidigt, hvis din statsmaskine forbyder denne kombination.

Problemtilstandsmaskiner løser

De fleste UI-fejl stammer fra komponenter, der kan gå ind i logisk umulige tilstande. Et klassisk eksempel: en formularindsendelsesknap, der ikke har nogen eksplicit tilstandsmodel, kan samtidigt være i en "indlæsnings"-tilstand og en "deaktiveret" tilstand fra to separate booleske flag. En tilstandsmaskine forhindrer dette ved at kræve, at komponenten altid er i nøjagtig én veldefineret tilstand til enhver tid.

  • "Boolesk flag helvede" — isLoading, isDisabled, isError, isSuccess alle modstridende
  • Raceforhold, hvor hurtige brugere udløser flere tilstande samtidigt
  • Overgangsfejl, hvor animationer starter fra forkerte mellempositioner
  • Kognitiv belastning for udviklere fra sporing af n × n flagkombinationer i kodegennemgang

Kernestatsmaskinekoncepter

Tilstandsmaskiner består af et begrænset sæt af tilstande, et ordforråd af begivenheder, der kan udløse overgange, og vagtforhold, der bestemmer, om en overgang er tilladt.

stater

Hver tilstand repræsenterer en specifik tilstand for komponenten. Eksempel på en datahentningskomponent: inaktiv, indlæsning, succes, fejl, opdaterer.

Begivenheder / Overgange

Hændelser udløser tilstandsændringer. "SUBMIT" overfører en formular fra inaktiv til indlæsning. "SUCCES" går fra indlæsning til succes. "FEJL" går fra indlæsning til fejl.

Vagter

Forhold, der skal være sande for en overgang til brand. En "SUBMIT" hændelse kan kun udløse tomgang → indlæsningsovergang, hvis formularvalideringsvagten består.

Kontekst / Udvidet tilstand

Hjælpedata, som maskinen bærer (brugerinputværdier, fejlmeddelelser, indlæste data) sammen med det aktuelle tilstandsnavn.

Statsmaskiner i ExodeUI

ExodeUI giver en visuel node-graf tilstandsmaskine editor. Du tegner tilstande som cirkler, forbinder dem med mærkede pile, der repræsenterer begivenheder, og vedhæfter forårsanimationer og visuelle egenskabsændringer til hver tilstand. Maskinen gemmes i .exode-filen: i React indlæser du den med ExodeUICanvas og kører den gennem input, og i Swift gennem ExodeUIController.

Snippet til produktionsimplementering

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

Ofte stillede spørgsmål

Relaterede vejledninger og eksempler

Design interaktiv UI én gang. Lever den samme fil.

Byg tilstande, fjederfysik og logik visuelt i ExodeUI, og afspil den samme fil i React, SwiftUI, Flutter og mere. Kom gratis i gang.

Prøv gratis