logologo
Start
Manual
Utveckling
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
Start
Manual
Utveckling
Plugins
API
logologo

Introduktion

Vad är FlowEngine?
FlowEngine & plugins
Snabbstart
Inlärningsväg

Guide

Registrera FlowModel
Skapa FlowModel
Rendera FlowModel
FlowModel: Händelseflöde & konfiguration
FlowModel-persistens
FlowModels livscykel
FlowModels kontextsystem
Reaktiv mekanism: Observable
FlowModel vs React.Component

Definitioner

ModelDefinition
FlowDefinition
EventDefinition
ActionDefinition
StepDefinition
Previous PageSkapa FlowModel
Next PageFlowModel: Händelseflöde & konfiguration
TIP

Detta dokument har översatts av AI. För eventuella felaktigheter, se den engelska versionen

#Rendera FlowModel

FlowModelRenderer är React-komponenten som utgör kärnan för att rendera en FlowModel. Den ansvarar för att omvandla en FlowModel-instans till en visuell React-komponent.

#Grundläggande användning

#FlowModelRenderer

import { FlowModelRenderer } from '@nocobase/flow-engine';

// Grundläggande användning
<FlowModelRenderer model={myModel} />

#FieldModelRenderer

För kontrollerade fältmodeller använder ni FieldModelRenderer för att rendera:

import { FieldModelRenderer } from '@nocobase/flow-engine';

// Rendering av kontrollerat fält
<FieldModelRenderer model={fieldModel} />

#Props-parametrar

#FlowModelRendererProps

ParameterTypStandardvärdeBeskrivning
modelFlowModel-FlowModel-instansen som ska renderas
uidstring-Den unika identifieraren för arbetsflödesmodellen
fallbackReact.ReactNode<Skeleton.Button size="small" />Innehåll som visas om renderingen misslyckas
showFlowSettingsboolean | objectfalseOm ingången till arbetsflödesinställningarna ska visas
flowSettingsVariant'dropdown' | 'contextMenu' | 'modal' | 'drawer''dropdown'Interaktionsstilen för arbetsflödesinställningarna
hideRemoveInSettingsbooleanfalseOm knappen för att ta bort ska döljas i inställningarna
showTitlebooleanfalseOm modellens titel ska visas i det övre vänstra hörnet av ramen
skipApplyAutoFlowsbooleanfalseOm automatiska arbetsflöden ska hoppas över
inputArgsRecord<string, any>-Extra kontext som skickas till useApplyAutoFlows
showErrorFallbackbooleantrueOm det yttersta lagret ska omslutas med komponenten FlowErrorFallback
settingsMenuLevelnumber-Nivå för inställningsmenyn: 1=endast aktuell modell, 2=inkludera underordnade modeller
extraToolbarItemsToolbarItemConfig[]-Ytterligare verktygsfältsobjekt

#Detaljerad konfiguration för showFlowSettings

När showFlowSettings är ett objekt stöds följande konfigurationer:

showFlowSettings={{
  showBackground: true,    // Visa bakgrund
  showBorder: true,        // Visa kantlinje
  showDragHandle: true,    // Visa draghandtag
  style: {},              // Anpassad verktygsfältsstil
  toolbarPosition: 'inside' // Verktygsfältets position: 'inside' | 'above' | 'below'
}}

#Renderingslivscykel

Hela renderingscykeln anropar följande metoder i ordning:

  1. model.dispatchEvent('beforeRender') - Händelse före rendering
  2. model.render() - Utför modellens render-metod
  3. model.onMount() - Komponentens monteringskrok
  4. model.onUnmount() - Komponentens avmonteringskrok

#Användningsexempel

#Grundläggande rendering

import { FlowModelRenderer } from '@nocobase/flow-engine';

function MyComponent() {
  const model = useFlowModel();
  
  return (
    <FlowModelRenderer 
      model={model}
      fallback={<div>Laddar...</div>}
    />
  );
}

#Rendering med arbetsflödesinställningar

// Visa inställningar men dölj knappen för att ta bort
<FlowModelRenderer
  model={myModel}
  showFlowSettings={true}
  hideRemoveInSettings={true}
/>

// Visa inställningar och titel
<FlowModelRenderer
  model={myModel}
  showFlowSettings={true}
  showTitle={true}
/>

// Använd högerklicksmenyläge
<FlowModelRenderer
  model={myModel}
  showFlowSettings={true}
  flowSettingsVariant="contextMenu"
  hideRemoveInSettings={true}
/>

#Anpassat verktygsfält

<FlowModelRenderer
  model={myModel}
  showFlowSettings={true}
  extraToolbarItems={[
    {
      key: 'custom-action',
      title: 'Anpassad åtgärd',
      icon: 'SettingOutlined',
      onClick: () => {
        console.log('Anpassad åtgärd');
      }
    }
  ]}
/>

#Hoppa över automatiska arbetsflöden

<FlowModelRenderer
  model={myModel}
  skipApplyAutoFlows={true}
  showErrorFallback={false}
/>

#Rendering av fältmodell

import { FieldModelRenderer } from '@nocobase/flow-engine';

function FormField({ model, onChange, ...props }) {
  return (
    <FieldModelRenderer
      model={model}
      onChange={onChange}
      {...props}
    />
  );
}

#Felhantering

FlowModelRenderer har en omfattande inbyggd felhanteringsmekanism:

  • Automatisk felgräns: showErrorFallback={true} är aktiverat som standard
  • Fel i automatiska arbetsflöden: Fångar och hanterar fel under exekvering av automatiska arbetsflöden
  • Renderingsfel: Visar reservinnehåll när modellrendering misslyckas
<FlowModelRenderer
  model={myModel}
  showErrorFallback={true}
  fallback={<div>Rendering misslyckades, försök igen</div>}
/>

#Prestandaoptimering

#Hoppa över automatiska arbetsflöden

För scenarier där automatiska arbetsflöden inte behövs kan ni hoppa över dem för att förbättra prestandan:

<FlowModelRenderer
  model={myModel}
  skipApplyAutoFlows={true}
/>

#Reaktiv uppdatering

FlowModelRenderer använder observer från @formily/reactive-react för reaktiva uppdateringar, vilket säkerställer att komponenten automatiskt renderas om när modellens tillstånd ändras.

#Att tänka på

  1. Modellvalidering: Säkerställ att den model som skickas in har en giltig render-metod.
  2. Livscykelhantering: Modellens livscykelkrokar anropas vid lämpliga tidpunkter.
  3. Felgräns: Vi rekommenderar att ni aktiverar felgränsen i en produktionsmiljö för att ge en bättre användarupplevelse.
  4. Prestandaöverväganden: För scenarier som involverar rendering av ett stort antal modeller, överväg att använda alternativet skipApplyAutoFlows.