logologo
Start
Dokumentacja
Deweloperzy
Wtyczki
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Start
Dokumentacja
Deweloperzy
Wtyczki
API
logologo

Wprowadzenie

Czym jest FlowEngine?
FlowEngine a wtyczki
Szybki start
Ścieżka nauki

Przewodnik

Rejestracja FlowModel
Tworzenie FlowModel
Renderowanie FlowModel
Strumień zdarzeń i konfiguracja FlowModel
Utrwalanie FlowModel
Cykl życia FlowModel
System kontekstu FlowModel
Mechanizm reaktywny: Observable
FlowModel vs React.Component

Definicje

ModelDefinition
FlowDefinition
EventDefinition
ActionDefinition
StepDefinition
Previous PageRenderowanie FlowModel
Next PageUtrwalanie FlowModel
TIP

Ten dokument został przetłumaczony przez AI. W przypadku niedokładności, proszę odnieść się do wersji angielskiej

#FlowModel: przepływ zdarzeń i konfiguracja

FlowModel oferuje podejście oparte na „przepływie zdarzeń (Flow)” do implementacji logiki konfiguracji komponentów, co sprawia, że ich zachowanie i konfiguracja są bardziej rozszerzalne i wizualne.

#Własny model

Mogą Państwo stworzyć własny model komponentu, dziedzicząc po FlowModel. Model musi implementować metodę render(), aby zdefiniować logikę renderowania komponentu.

class MyModel extends FlowModel {
  render() {
    return <Button {...this.props} />;
  }
}

#Rejestrowanie Flow

Każdy model może zarejestrować jeden lub więcej Flow, aby opisać logikę konfiguracji komponentu oraz kroki interakcji.

MyModel.registerFlow({
  key: 'buttonSettings',
  title: 'Ustawienia przycisku',
  steps: {
    general: {
      title: 'Konfiguracja ogólna',
      uiSchema: {
        title: {
          type: 'string',
          title: 'Tytuł przycisku',
          'x-decorator': 'FormItem',
          'x-component': 'Input',
        },
      },
      defaultParams: {
        type: 'primary',
      },
      handler(ctx, params) {
        ctx.model.setProps('children', params.title);
        ctx.model.setProps('type', params.type);
      },
    },
  },
});

Opis

  • key: Unikalny identyfikator Flow.
  • title: Nazwa Flow, używana do wyświetlania w interfejsie użytkownika.
  • steps: Definiuje kroki konfiguracji (Step). Każdy krok zawiera:
    • title: Tytuł kroku.
    • uiSchema: Struktura formularza konfiguracji (kompatybilna z Formily Schema).
    • defaultParams: Parametry domyślne.
    • handler(ctx, params): Wywoływany podczas zapisu, służy do aktualizacji stanu modelu.

#Renderowanie modelu

Podczas renderowania modelu komponentu mogą Państwo użyć parametru showFlowSettings, aby kontrolować, czy funkcja konfiguracji ma być włączona. Jeśli showFlowSettings jest włączone, w prawym górnym rogu komponentu automatycznie pojawi się wejście do konfiguracji (np. ikona ustawień lub przycisk).

<FlowModelRenderer model={model} showFlowSettings />

#Ręczne otwieranie formularza konfiguracji za pomocą openFlowSettings

Oprócz otwierania formularza konfiguracji za pomocą wbudowanego punktu interakcji, mogą Państwo również ręcznie wywołać openFlowSettings() w kodzie.

flowSettings.open(options: FlowSettingsOpenOptions): Promise<boolean>;
model.openFlowSettings(options?: Omit<FlowSettingsOpenOptions, 'model'>): Promise<boolean>;

#Definicje parametrów

interface FlowSettingsOpenOptions {
  model: FlowModel;               // Wymagane, instancja modelu, do którego należy
  preset?: boolean;               // Renderuje tylko kroki oznaczone jako preset=true (domyślnie false)
  flowKey?: string;               // Określa pojedynczy Flow
  flowKeys?: string[];            // Określa wiele Flow (ignorowane, jeśli podano również flowKey)
  stepKey?: string;               // Określa pojedynczy krok (zazwyczaj używane z flowKey)
  uiMode?: 'dialog' | 'drawer';   // Kontener do wyświetlania formularza, domyślnie 'dialog'
  onCancel?: () => void;          // Funkcja zwrotna wywoływana po kliknięciu Anuluj
  onSaved?: () => void;           // Funkcja zwrotna wywoływana po pomyślnym zapisaniu konfiguracji
}

#Przykład: Otwieranie formularza konfiguracji dla konkretnego Flow w trybie szuflady (Drawer)

await model.openFlowSettings({
  flowKey: 'buttonSettings',
  uiMode: 'drawer',
  onSaved: () => {
    console.log('Konfiguracja przycisku została zapisana');
  },
});