SuperAPI AI 工具集

syncfusion-react-form-builder

前端与建站

查看项目

更新于 10-16 05:59

技能介绍

用途

Syncfusion React Form Builder 是一个可视化表单设计器,用于生成由 schema 驱动的表单定义。用户可以把字段拖拽到画布上,在属性面板中配置字段,预览结果,并导出 schema 供 Form Renderer 使用。

本技能适用于需要创建、排查或扩展可编辑 React 表单的场景,具体包括:

  • 创建 Vite React 应用并安装 Syncfusion Form Builder 包
  • 渲染带有工具箱、画布、属性面板、代码视图和预览的可视化表单设计器
  • 通过 schema 属性加载初始表单
  • 在 properties 中定义字段、在 layout 中排列字段,并设置表单级配置
  • 配置 Form Builder 的导出、预览、持久化、RTL、模式、模板和工具箱项等属性
  • 从 Basic、Advanced 和 Layout 工具箱分类中选择字段
  • 自定义字段属性、添加或隐藏属性面板条目,并刷新设计器
  • 定义自定义工具箱模板,并用 setFieldValue 同步模板值
  • 处理字段的 drag-start、drag-over、drop 和 property-changed 事件
  • 查看、复制、导入或导出生成的 JSON schema
  • 准备包含校验、条件、表达式、依赖下拉、动态范围、远程数据或 Data Grid 字段的 schema

本技能面向表单的设计与编辑。如果主要任务是向最终用户渲染已完成的 schema、处理提交值或配置渲染器表单动作,应使用 React Form Renderer 技能。

主要能力

组件 API 与事件

涵盖 Form Builder 的全部属性、类型和默认值;Simple 与 Developer 模式;schema、export、preview、persistence、RTL、templates 和 toolbox 配置。

快速开始

包含 Vite 与 React 环境搭建及 CSS 主题引入、Form Builder 基本用法、将表单 schema 绑定到组件,以及编写表单的最小可运行示例。

Schema 与初始表单

说明 schema 属性与根 schema 结构、properties 中的字段定义与 layout 中的渲染顺序、表单设置、支持的控件与布局容器,以及如何把每个所需字段匹配到文档中记录的控件和类型。

当客户需要一个带初始表单的 React Form Builder 时,先按快速开始创建 Vite 与 React 组件环境,再用 schema 参考定义初始 schema。若所需 schema 需要以下行为,则查阅对应参考:

  • 校验规则:validations
  • 条件行为:conditions
  • 计算值:expressions
  • 依赖下拉:dependent-dropdown
  • 动态数值/日期/时间边界:min-max-range
  • 远程下拉、多选或复选框组数据:remote-data-binding-in-components
  • Data Grid 字段与数据源:data-grid-features

字段组件面板

涵盖 Fields 与 Templates 选项卡、Basic/Advanced/Layout 分类、搜索过滤行为与工具箱自定义、自定义模板库与 formTemplates。

属性面板

说明面板在选中字段时出现的时机,Display、Validation、Conditions、Layout 和 Data 选项卡,setProperty 与 getProperty 用法,以及自动保存与属性刷新行为。

预览与 JSON

包含预览选项卡工作流、用 enablePreview 禁用预览、JSON schema 查看与复制操作。

模板

说明用 toolboxItems 定义自定义工具箱模板、导出时使用 templateId,以及把第三方组件映射到 schema。

表单设置

涵盖全局表单标题与宽度、布局级设置(如 Hide Label、Size、Float Label Type),以及在不影响单个字段的情况下应用表单级配置。

导出与导入

说明导出 schema 供 Form Renderer 复用、把已有 schema 导入回 Form Builder,以及用 allowExport 禁用导出。

使用方式

安装包:

npm install @syncfusion/ej2-react-form-builder @syncfusion/ej2-material3-theme

导入组件并绑定初始 schema:

import { FormBuilderComponent } from '@syncfusion/ej2-react-form-builder';
import '@syncfusion/ej2-material3-theme/styles/material3.css';

const formSchema = {
  version: '0.1.0',
  properties: {
    emailAddress: {
      id: 'textbox_1785491685456_167',
      name: 'emailAddress',
      type: 'string',
      label: 'Email Address',
      textboxType: 'email',
      required: true,
      placeholder: 'Enter your email',
      widget: 'textbox'
    }
  },
  layout: [{ type: 'field', propertyId: 'emailAddress' }],
  settings: { name: 'Untitled Form' }
};

export default function App() {
  return <FormBuilderComponent schema={formSchema} />;
}

用 npm run dev 启动 Vite 应用,然后使用工具箱和属性面板编辑表单。项目创建、主题设置和完整初始配置见快速开始参考。

常见模式

自定义工具箱:用 toolboxCategories 控制工具箱中出现的字段类型及其分组分类。

import { FormBuilderComponent } from '@syncfusion/ej2-react-form-builder';
import { ComponentCategory, FormWidgetType } from '@syncfusion/ej2-form-builder';

const toolboxCategories = [
  {
    category: ComponentCategory.Basic,
    items: [FormWidgetType.Textbox, FormWidgetType.Textarea]
  },
  {
    category: ComponentCategory.Advanced,
    items: [FormWidgetType.Date, FormWidgetType.DateRange]
  }
];

动态添加属性:用 setProperty 为控件添加自定义属性,并用 refresh() 更新面板。

formBuilderRef.current?.setProperty(FormWidgetType.Textarea, {
  key: 'enableRtl',
  label: 'Enable RTL',
  type: 'boolean',
  default: false
});

注册自定义模板:在 toolboxItems 中定义第三方自定义控件,并在值变化时调用 setFieldValue。

<FormBuilderComponent
  toolboxItems={[{ type: FormWidgetType.Textbox, template: inputTemplate }]}
/>;

使用预览与 JSON 输出:切换到 Preview 选项卡验证布局与交互,再打开 JSON 选项卡查看导出的 schema,并复制用于 Form Renderer。

常见做法

  • 把每个字段放在 properties 中,并在 layout 中通过其 propertyId 引用
  • 为每个字段设置稳定唯一的 name 和 id;条件、表达式和依赖数据使用文档记录的 id 与 name 引用
  • 把每个所需字段的控件和类型匹配到 schema 参考中支持的清单
  • 用 toolboxCategories 或 toolboxItems 控制可视化工具箱中可用的字段
  • 用 formTemplates 存放可复用的完整 schema,用自定义工具箱模板承载第三方控件
  • 在 Preview 中验证表单,检查 JSON 选项卡,确认 schema 与布局正确后再导出
  • 设计器交互状态使用 API 事件负载;运行时值与提交行为使用 Form Renderer 事件

实现检查清单

构建或修复 Form Builder 表单时,确认:

  • React 包与主题已安装,且已导入 FormBuilderComponent
  • schema 值是对象、JSON 字符串或受支持的 schema 实例
  • 每个字段都有唯一 name、稳定 id、受支持的 widget 和匹配的 type
  • 每个 layout 字段节点都引用有效的 propertyId
  • 布局容器保留在 layout 中,其子字段保留在 properties 中
  • 校验、条件、表达式、范围和数据源使用文档记录的参考结构
  • 自定义模板通过 setFieldValue 更新 Form Builder 状态
  • 预览与导出按所需工作流启用或禁用
  • 自定义组件 ref 使用文档记录的 React useRef 模式

典型工作流

  1. 先创建基础 schema 并加载到构建器中
  2. 使用工具箱分类和预定义模板组织表单设计
  3. 在右侧面板编辑字段属性,配置校验、布局和显示行为
  4. 在 Preview 中验证最终表单,然后导出 schema
  5. 之后可重新导入 schema 继续编辑或调整已生成的表单

适用场景

  • 需要在 React(Vite)项目中搭建可视化表单设计器
  • 需要以 schema 驱动方式定义、编辑和导出表单
  • 需要为表单配置校验、条件、表达式、依赖下拉、动态范围、远程数据或 Data Grid 字段
  • 需要自定义工具箱、属性面板或第三方控件模板
  • 需要排查或扩展已有的 Form Builder 表单

限制

  • 本技能面向表单的设计与编辑;渲染成品 schema、处理提交值或配置渲染器动作应使用 React Form Renderer 技能
  • 字段的 widget 与 type 必须匹配文档记录的受支持清单
  • 自定义模板需通过 setFieldValue 同步状态,否则设计器状态可能不一致
  • 关于收费、价格、平台支持范围等具体信息,资料中暂未提供