docs/docs/cn/flow-engine/flow-model-renderer.md
FlowModelRenderer 是用于渲染 FlowModel 的核心 React 组件,它负责将 FlowModel 实例转换为可视化的 React 组件。
import { FlowModelRenderer } from '@nocobase/flow-engine';
// 基本使用
<FlowModelRenderer model={myModel} />
对于受控的字段 Model,使用 FieldModelRenderer 渲染:
import { FieldModelRenderer } from '@nocobase/flow-engine';
// 受控字段渲染
<FieldModelRenderer model={fieldModel} />
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
model | FlowModel | - | 要渲染的 FlowModel 实例 |
uid | string | - | 流程模型的唯一标识符 |
fallback | React.ReactNode | <Skeleton.Button size="small" /> | 渲染失败时的回退内容 |
showFlowSettings | boolean | object | false | 是否显示流程设置入口 |
flowSettingsVariant | 'dropdown' | 'contextMenu' | 'modal' | 'drawer' | 'dropdown' | 流程设置的交互风格 |
hideRemoveInSettings | boolean | false | 是否在设置中隐藏移除按钮 |
showTitle | boolean | false | 是否在边框左上角显示模型标题 |
skipApplyAutoFlows | boolean | false | 是否跳过自动应用流程 |
inputArgs | Record<string, any> | - | 传递给 useApplyAutoFlows 的额外上下文 |
showErrorFallback | boolean | true | 是否在最外层包装 FlowErrorFallback 组件 |
settingsMenuLevel | number | - | 设置菜单层级:1=仅当前模型,2=包含子模型 |
extraToolbarItems | ToolbarItemConfig[] | - | 额外的工具栏项目 |
当 showFlowSettings 为对象时,支持以下配置:
showFlowSettings={{
showBackground: true, // 显示背景
showBorder: true, // 显示边框
showDragHandle: true, // 显示拖拽手柄
style: {}, // 自定义工具栏样式
toolbarPosition: 'inside' // 工具栏位置:'inside' | 'above' | 'below'
}}
整个渲染周期会按顺序调用以下方法:
import { FlowModelRenderer } from '@nocobase/flow-engine';
function MyComponent() {
const model = useFlowModel();
return (
<FlowModelRenderer
model={model}
fallback={<div>加载中...</div>}
/>
);
}
// 显示设置但隐藏删除按钮
<FlowModelRenderer
model={myModel}
showFlowSettings={true}
hideRemoveInSettings={true}
/>
// 显示设置和标题
<FlowModelRenderer
model={myModel}
showFlowSettings={true}
showTitle={true}
/>
// 使用右键菜单模式
<FlowModelRenderer
model={myModel}
showFlowSettings={true}
flowSettingsVariant="contextMenu"
hideRemoveInSettings={true}
/>
<FlowModelRenderer
model={myModel}
showFlowSettings={true}
extraToolbarItems={[
{
key: 'custom-action',
title: '自定义操作',
icon: 'SettingOutlined',
onClick: () => {
console.log('自定义操作');
}
}
]}
/>
<FlowModelRenderer
model={myModel}
skipApplyAutoFlows={true}
showErrorFallback={false}
/>
import { FieldModelRenderer } from '@nocobase/flow-engine';
function FormField({ model, onChange, ...props }) {
return (
<FieldModelRenderer
model={model}
onChange={onChange}
{...props}
/>
);
}
FlowModelRenderer 内置了完善的错误处理机制:
showErrorFallback={true}<FlowModelRenderer
model={myModel}
showErrorFallback={true}
fallback={<div>渲染失败,请重试</div>}
/>
对于不需要自动流程的场景,可以跳过以提高性能:
<FlowModelRenderer
model={myModel}
skipApplyAutoFlows={true}
/>
FlowModelRenderer 使用 @formily/reactive-react 的 observer 进行响应式更新,确保模型状态变化时组件能够自动重新渲染。
model 具有有效的 render 方法skipApplyAutoFlows 选项