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 lest·Av ExodeUI-teamet

State Machine UI: Bygge deterministiske, feilfrie grensesnitt

Lær hvordan visuelle tilstandsmaskiner eliminerer umulige UI-tilstander, forenkler komplekse interaktive komponenter og lager deterministiske, feilfrie grensesnitt i React.

Direkte sammendrag og definisjon

Kjerne takeaway

En UI-tilstandsmaskin er en matematisk modell som beskriver alle gyldige tilstander en grensesnittkomponent kan okkupere, og de eksplisitte overgangene mellom disse tilstandene utløst av brukerhendelser eller systemforhold. Statlige maskiner eliminerer hele kategorier av brukergrensesnittfeil ved å gjøre "umulige tilstander umulige" - lastespinneren og suksessmerket kan ikke begge vises samtidig hvis statens maskin forbyr den kombinasjonen.

Problemtilstanden Maskiner løser

De fleste UI-feil stammer fra komponenter som kan gå inn i logisk umulige tilstander. Et klassisk eksempel: en knapp for innsending av skjemaer som ikke har noen eksplisitt tilstandsmodell kan samtidig være i en "lastende" tilstand og en "deaktivert" tilstand fra to separate boolske flagg. En tilstandsmaskin forhindrer dette ved å kreve at komponenten alltid er i nøyaktig én veldefinert tilstand til enhver tid.

  • "Boolsk flagghelvete" — er Laster, er Disabled, isError, isSuccess alle motstridende
  • Løpsforhold der raske brukere utløser flere tilstander samtidig
  • Overgangsfeil der animasjoner starter fra feil mellomposisjon
  • Kognitiv belastning for utviklere fra sporing av n × n flaggkombinasjoner i kodegjennomgang

Kjernetilstandsmaskinkonsepter

Tilstandsmaskiner består av et begrenset sett med tilstander, et vokabular av hendelser som kan utløse overganger, og vaktforhold som avgjør om en overgang er tillatt.

stater

Hver tilstand representerer en spesifikk tilstand for komponenten. Eksempel på en datahentingskomponent: inaktiv, lasting, suksess, feil, oppdaterer.

Hendelser / Overganger

Hendelser utløser tilstandsendringer. "SUBMIT" overfører et skjema fra inaktiv til lasting. "SUKSESS" går fra lasting til suksess. "ERROR" går fra lasting til feil.

Vakter

Forhold som må være sanne for en overgang til brann. En "SUBMIT"-hendelse kan bare utløse inaktiv → lasting-overgang hvis skjemavalideringsvakten består.

Kontekst / utvidet tilstand

Hjelpedata som maskinen bærer (brukerinndataverdier, feilmeldinger, innlastede data) sammen med gjeldende tilstandsnavn.

Statlige maskiner i ExodeUI

ExodeUI gir en visuell node-graftilstandsmaskinredigerer. Du tegner tilstander som sirkler, kobler dem sammen med merkede piler som representerer hendelser, og legger ved våranimasjoner og visuelle egenskapsendringer til hver tilstand. Maskinen er lagret i .exode-filen: i React laster du den med ExodeUICanvas og kjører den gjennom innganger, og i Swift gjennom ExodeUIController.

Snippet for produksjonsimplementering

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 stilte spørsmål

Relaterte veiledninger og eksempler

Design interaktivt UI én gang. Lever den samme filen.

Bygg tilstander, fjærfysikk og logikk visuelt i ExodeUI, og spill av den samme filen i React, SwiftUI, Flutter og mer. Kom i gang gratis.

Prøv gratis