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

Introdução

O que é o FlowEngine?
Relação entre FlowEngine e Plugins
Início Rápido
Roteiro de Aprendizagem

Guia

Registrar FlowModel
Criar FlowModel
Renderizar FlowModel
Fluxo de Eventos e Configuração do FlowModel
Persistência do FlowModel
Ciclo de Vida do FlowModel
Sistema de Contexto do FlowModel
Mecanismo Reativo: Observable
FlowModel vs React.Component

Definições

ModelDefinition
FlowDefinition
EventDefinition
ActionDefinition
StepDefinition
Previous PageRenderizar FlowModel
Next PagePersistência do FlowModel
Aviso de tradução por IA

Esta documentação foi traduzida automaticamente por IA.

#FlowModel: Fluxo de Eventos e Configuração

O FlowModel oferece uma abordagem baseada em "fluxo de eventos" (Flow) para implementar a lógica de configuração de componentes, tornando o comportamento e a configuração dos componentes mais extensíveis e visuais.

#Modelo Personalizado

Você pode criar um modelo de componente personalizado estendendo FlowModel. O modelo precisa implementar o método render() para definir a lógica de renderização do componente.

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

#Registrando um Fluxo (Flow de Eventos)

Cada modelo pode registrar um ou mais fluxos para descrever a lógica de configuração e os passos de interação do componente.

MyModel.registerFlow({
  key: 'buttonSettings',
  title: 'Configurações do Botão',
  steps: {
    general: {
      title: 'Configuração Geral',
      uiSchema: {
        title: {
          type: 'string',
          title: 'Título do Botão',
          'x-decorator': 'FormItem',
          'x-component': 'Input',
        },
      },
      defaultParams: {
        type: 'primary',
      },
      handler(ctx, params) {
        ctx.model.setProps('children', params.title);
        ctx.model.setProps('type', params.type);
      },
    },
  },
});

Descrição

  • key: O identificador único para o fluxo.
  • title: O nome do fluxo, usado para exibição na interface do usuário (UI).
  • steps: Define os passos de configuração (Step). Cada passo inclui:
    • title: O título do passo.
    • uiSchema: A estrutura do formulário de configuração (compatível com Formily Schema).
    • defaultParams: Parâmetros padrão.
    • handler(ctx, params): Acionado ao salvar, usado para atualizar o estado do modelo.

#Renderizando o Modelo

Ao renderizar um modelo de componente, você pode usar o parâmetro showFlowSettings para controlar se o recurso de configuração será ativado. Se showFlowSettings estiver ativado, uma entrada de configuração (como um ícone de configurações ou um botão) aparecerá automaticamente no canto superior direito do componente.

<FlowModelRenderer model={model} showFlowSettings />

#Abrindo o Formulário de Configuração Manualmente com openFlowSettings

Além de abrir o formulário de configuração através da entrada de interação integrada, você também pode chamar openFlowSettings() manualmente no código.

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

#Definição dos Parâmetros

interface FlowSettingsOpenOptions {
  model: FlowModel;               // Obrigatório, a instância do modelo ao qual pertence
  preset?: boolean;               // Renderiza apenas os passos marcados como preset=true (padrão false)
  flowKey?: string;               // Especifica um único fluxo
  flowKeys?: string[];            // Especifica múltiplos fluxos (ignorado se flowKey também for fornecido)
  stepKey?: string;               // Especifica um único passo (geralmente usado com flowKey)
  uiMode?: 'dialog' | 'drawer';   // O contêiner para exibir o formulário, padrão 'dialog'
  onCancel?: () => void;          // Callback quando o botão cancelar é clicado
  onSaved?: () => void;           // Callback após a configuração ser salva com sucesso
}

#Exemplo: Abrindo o Formulário de Configuração de um Fluxo Específico no Modo Drawer

await model.openFlowSettings({
  flowKey: 'buttonSettings',
  uiMode: 'drawer',
  onSaved: () => {
    console.log('Configurações do botão salvas');
  },
});