表单配置详解
Framework:
概述
表单配置是 Schema FormX 的核心,通过配置来定义表单的结构、行为和样式。本章节将详细介绍表单配置的各项参数。
基础配置
Form 组件属性
示例
Schema 配置
数据管理模式
Schema FormX 支持两种数据管理模式:
非受控模式(推荐)
使用 defaultData 设置初始值,表单内部自动管理数据状态:
特点:
- 简单易用,无需手动同步状态
- 适合大多数场景
- 通过
ref调用getData()/setData()操作数据
受控模式
使用 data + onChange 完全控制表单数据:
特点:
- 外部完全控制数据流向
- 适合需要与外部状态(如 Redux、URL 参数)联动的场景
onChange回调中的data是冻结对象,需浅拷贝后修改
模式对比
注意:
data和defaultData可以同时使用。当两者同时提供时,data优先级更高,defaultData用于isDirty()的基准比较。例如,可以在受控模式下通过defaultData设置初始值基准,用于判断表单数据是否被修改。
关于
hidden字段:设置hidden: true仅在视觉上隐藏字段(display: none)。隐藏字段仍会参与验证 —— 如果隐藏字段设置了required: true,仍会触发验证错误。如需跳过隐藏字段的验证,请使用条件required或自定义validator。
FieldSchema 类型
每个字段配置项包含以下属性:
字段类型
字段配置示例
Layout 配置
Layout 类型
布局配置示例
按字段配置样式
组件配置
全局组件注册
通过 components 属性注册所有自定义组件:
字段指定组件
通过 component 属性为特定字段指定组件:
数据配置
默认数据
受控数据
数据变化回调
触发时机:
onChange在字段值每次变化时立即触发(非失焦触发)。每次值变化都会同步调用onChange,同时触发依赖联动和字段验证。
最佳实践
- 使用 TypeScript:为表单数据定义类型,获得更好的类型提示
- 分离配置:将 schema 和 layout 配置独立出来,便于维护
- 组件复用:将常用的自定义组件注册为全局组件
- 样式分离:使用 className 而非内联样式,便于主题定制