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 →
Arsitektur Logika11 menit membaca·Oleh tim ExodeUI

State Machine UI: Membangun Antarmuka yang Pasti dan Bebas Bug

Pelajari bagaimana mesin status visual menghilangkan status UI yang mustahil, menyederhanakan komponen interaktif yang kompleks, dan membuat antarmuka deterministik dan bebas bug di React.

Ringkasan & Definisi Langsung

Pengambilan Inti

Mesin status UI adalah model matematika yang mendeskripsikan semua status valid yang dapat ditempati oleh komponen antarmuka, dan transisi eksplisit antara status tersebut yang dipicu oleh peristiwa pengguna atau kondisi sistem. Mesin negara menghilangkan seluruh kategori bug UI dengan membuat "keadaan yang tidak mungkin menjadi tidak mungkin" — pemutar pemuatan dan tanda centang keberhasilan Anda tidak dapat muncul secara bersamaan jika mesin negara Anda melarang kombinasi tersebut.

Mesin Status Masalah Terpecahkan

Sebagian besar bug UI berasal dari komponen yang secara logika tidak mungkin masuk ke dalam keadaan. Contoh klasik: tombol pengiriman formulir yang tidak memiliki model status eksplisit dapat secara bersamaan berada dalam status "memuat" dan status "dinonaktifkan" dari dua tanda boolean terpisah. Mesin negara mencegah hal ini dengan mengharuskan komponen selalu berada dalam satu keadaan yang terdefinisi dengan baik setiap saat.

  • "Boolean flag hell" - isLoading, isDisabled, isError, isSuccess semuanya bertentangan
  • Kondisi balapan di mana pengguna cepat memicu beberapa status secara bersamaan
  • Bug transisi di mana animasi dimulai dari posisi tengah yang salah
  • Beban kognitif pengembang dari pelacakan kombinasi tanda n × n dalam tinjauan kode

Konsep Mesin Negara Inti

Mesin negara terdiri dari sekumpulan keadaan yang terbatas, kosakata peristiwa yang dapat memicu transisi, dan kondisi penjaga yang menentukan apakah suatu transisi diperbolehkan.

Amerika

Setiap keadaan mewakili kondisi tertentu dari komponen. Contoh komponen pengambilan data: idle, loading, sukses, error, refresh.

Peristiwa / Transisi

Peristiwa memicu perubahan status. "KIRIM" mentransisikan formulir dari menganggur ke memuat. Transisi "SUKSES" dari memuat ke sukses. Transisi "ERROR" dari memuat ke kesalahan.

Penjaga

Kondisi yang harus dipenuhi untuk transisi ke api. Peristiwa "KIRIM" hanya dapat memicu transisi menganggur → memuat jika penjaga validasi formulir lolos.

Konteks / Keadaan yang Diperluas

Data tambahan yang dibawa mesin (nilai masukan pengguna, pesan kesalahan, data yang dimuat) di samping nama status saat ini.

Mesin Negara di ExodeUI

ExodeUI menyediakan editor mesin status grafik simpul visual. Anda menggambar negara bagian sebagai lingkaran, menghubungkannya dengan panah berlabel yang mewakili peristiwa, dan melampirkan animasi pegas dan perubahan properti visual ke setiap negara bagian. Mesin disimpan dalam file .exode: di React Anda memuatnya dengan ExodeUICanvas dan menjalankannya melalui input, dan di Swift melalui ExodeUIController.

Cuplikan Implementasi Produksi

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

Pertanyaan yang Sering Diajukan

Panduan & Contoh Terkait

Rancang UI interaktif sekali. Kirim file yang sama.

Buat state, fisika pegas, dan logika secara visual di ExodeUI, lalu putar file yang sama di React, SwiftUI, Flutter, dan lainnya. Mulai gratis.

Cobalah secara gratis