logologo
Empezar
Manual
Desarrollo
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
Empezar
Manual
Desarrollo
Plugins
API
logologo

Introducción

¿Qué es FlowEngine?
Relación entre FlowEngine y plugins
Inicio rápido
Hoja de ruta de aprendizaje

Guía

Registrar FlowModel
Crear FlowModel
Renderizar FlowModel
Flujo de eventos y configuración de FlowModel
Persistencia de FlowModel
Ciclo de vida de FlowModel
Sistema de contexto de FlowModel
Mecanismo reactivo: Observable
FlowModel vs React.Component

Definitions

ModelDefinition
FlowDefinition
EventDefinition
ActionDefinition
StepDefinition
Previous PageCrear FlowModel
Next PageFlujo de eventos y configuración de FlowModel
Aviso de traducción por IA

Esta documentación ha sido traducida automáticamente por IA.

#Renderizar FlowModel

FlowModelRenderer es el componente principal de React que se encarga de renderizar un FlowModel. Su función es transformar una instancia de FlowModel en un componente visual de React.

#Uso Básico

#FlowModelRenderer

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

// Uso básico
<FlowModelRenderer model={myModel} />

#FieldModelRenderer

Para los modelos de campo (Field Models) controlados, utilice FieldModelRenderer para renderizarlos:

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

// Renderizado de campo controlado
<FieldModelRenderer model={fieldModel} />

#Propiedades (Props)

#Propiedades de FlowModelRenderer (FlowModelRendererProps)

ParámetroTipoValor predeterminadoDescripción
modelFlowModel-La instancia de FlowModel a renderizar.
uidstring-El identificador único para el modelo de flujo.
fallbackReact.ReactNode<Skeleton.Button size="small" />Contenido de respaldo a mostrar si falla el renderizado.
showFlowSettingsboolean | objectfalseIndica si se muestra la entrada a la configuración del flujo.
flowSettingsVariant'dropdown' | 'contextMenu' | 'modal' | 'drawer''dropdown'El estilo de interacción para la configuración del flujo.
hideRemoveInSettingsbooleanfalseIndica si se oculta el botón de eliminar en la configuración.
showTitlebooleanfalseIndica si se muestra el título del modelo en la esquina superior izquierda del borde.
skipApplyAutoFlowsbooleanfalseIndica si se deben omitir la aplicación de flujos automáticos.
inputArgsRecord<string, any>-Contexto adicional pasado a useApplyAutoFlows.
showErrorFallbackbooleantrueIndica si se envuelve la capa más externa con el componente FlowErrorFallback.
settingsMenuLevelnumber-Nivel del menú de configuración: 1=solo el modelo actual, 2=incluir modelos hijos.
extraToolbarItemsToolbarItemConfig[]-Elementos adicionales para la barra de herramientas.

#Configuración detallada de showFlowSettings

Cuando showFlowSettings es un objeto, se admiten las siguientes configuraciones:

showFlowSettings={{
  showBackground: true,    // Mostrar fondo
  showBorder: true,        // Mostrar borde
  showDragHandle: true,    // Mostrar manejador de arrastre
  style: {},              // Estilo personalizado de la barra de herramientas
  toolbarPosition: 'inside' // Posición de la barra de herramientas: 'inside' | 'above' | 'below'
}}

#Ciclo de Vida del Renderizado

El ciclo de vida completo del renderizado invoca los siguientes métodos en orden:

  1. model.dispatchEvent('beforeRender') - Evento beforeRender (antes del renderizado)
  2. model.render() - Ejecuta el método de renderizado del modelo
  3. model.onMount() - Hook de montaje del componente
  4. model.onUnmount() - Hook de desmontaje del componente

#Ejemplos de Uso

#Renderizado Básico

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

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

#Renderizado con Configuración de Flujo

// Muestra la configuración pero oculta el botón de eliminar
<FlowModelRenderer
  model={myModel}
  showFlowSettings={true}
  hideRemoveInSettings={true}
/>

// Muestra la configuración y el título
<FlowModelRenderer
  model={myModel}
  showFlowSettings={true}
  showTitle={true}
/>

// Utiliza el modo de menú contextual (clic derecho)
<FlowModelRenderer
  model={myModel}
  showFlowSettings={true}
  flowSettingsVariant="contextMenu"
  hideRemoveInSettings={true}
/>

#Barra de Herramientas Personalizada

<FlowModelRenderer
  model={myModel}
  showFlowSettings={true}
  extraToolbarItems={[
    {
      key: 'custom-action',
      title: 'Acción personalizada',
      icon: 'SettingOutlined',
      onClick: () => {
        console.log('Acción personalizada');
      }
    }
  ]}
/>

#Omitir Flujos Automáticos

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

#Renderizado de Modelo de Campo

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

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

#Gestión de Errores

FlowModelRenderer incorpora un mecanismo completo de gestión de errores:

  • Límite de errores automático: showErrorFallback={true} está habilitado por defecto.
  • Errores de flujos automáticos: Captura y gestiona los errores durante la ejecución de los flujos automáticos.
  • Errores de renderizado: Muestra contenido de respaldo cuando el renderizado del modelo falla.
<FlowModelRenderer
  model={myModel}
  showErrorFallback={true}
  fallback={<div>El renderizado falló, por favor, inténtelo de nuevo</div>}
/>

#Optimización del Rendimiento

#Omitir Flujos Automáticos

Para escenarios donde los flujos automáticos no son necesarios, puede omitirlos para mejorar el rendimiento:

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

#Actualizaciones Reactivas

FlowModelRenderer utiliza el observer de @formily/reactive-react para las actualizaciones reactivas, asegurando que el componente se vuelva a renderizar automáticamente cuando el estado del modelo cambia.

#Consideraciones

  1. Validación del modelo: Asegúrese de que el model proporcionado tenga un método render válido.
  2. Gestión del ciclo de vida: Los hooks del ciclo de vida del modelo se invocarán en el momento adecuado.
  3. Límite de errores: Se recomienda habilitar el límite de errores en un entorno de producción para ofrecer una mejor experiencia de usuario.
  4. Consideración de rendimiento: Para escenarios que implican el renderizado de un gran número de modelos, considere utilizar la opción skipApplyAutoFlows.