Skip to content

ProForm

ProForm 是一个支持动态配置的高级表单组件,减少了模板语法,使表单开发更简单。

基础用法

API

ProForm 在 el-form 上进行了一层封装,支持了一些预设。

ProForm Attributes

参数说明类型默认值
formPropsel-form 属性配置FormProps
classNameel-form 类名string
formItems列定义ProFormItemProps[]
submitter提交按钮区域配置boolean | ProFormSubmitterPropstrue
grid开启栅格化模式boolean
rowProps开启 grid 时传给 el-rowRowProps{ gutter: 8 }
initialValues表单默认值Record<string, any>

ProForm Events

事件名说明类型
onFinish提交表单且数据验证成功后回调事件(values: Record<string, any>) => void
onError提交表单数据验证失败后的回调事件(error: unknown) => void
onReset点击重置按钮的回调,此时数据已重置完成() => void

ProForm Methods

方法名说明类型
getFormRef获取 el-form 的 ref() => FormInstance | undefined
getForm获取表单数据() => Record<string, any>
setFieldsValue批量更新表单数据(values: Record<string, any>) => void
setFieldValue更新单个字段(key: string, value: any) => void
submit手动提交() => void
reset手动重置() => void
resetAllFields重置表单的拓展方法,过滤了非初始化收集的字段() => void

formItemsConfig

继承 el-form-itemFormItemProps,并扩展(详见 Schema 说明):

参数说明类型默认值
renderLabel自定义 label,不支持 slot() => VNode
valueType表单元素类型;slot 表示自定义valueType | slot
renderField自定义表单元素({ form: any, formItem: ProFormItemProps, recordKey?: RecordKey, index?: number }) => VNode
fieldProps表单元素 props(如 el-input 的 props)Record<string, any>
fieldEvents表单元素 eventsRecord<string, any>
valueEnum选择器枚举,自动生成 optionsvalueEnum
optionLoader异步加载选择器/级联选项() => Promise<Record<string, any>[]>
initialValue单项默认值,优先级高于 initialValuesany
colProps开启 grid 时传给 el-colColProps
hideInForm在表单中隐藏boolean
customSlot自定义 el-form-itemtrue 时默认 slot 名为 propboolean | string
renderFormItem自定义整个 el-form-item(form: any) => VNode
key组件 keystring

fieldProps.options 用于选择器、单选框组、多选框组的数据,格式同 Element Plus Select 选项

renderField / renderFormItem:若配置了 prop,会参与表单初始化;否则请在 initialValues 中提供默认值。

submitterProps

设置 submitter={false} 可隐藏默认提交按钮。

参数说明类型默认值
resetText重置按钮文本string重置
submitText提交按钮文本string提交
resetButtonPropsel-button 的 attributes & button 的原生属性ButtonProps
submitButtonPropsel-button 的 attributes & button 的原生属性ButtonProps
customRender自定义渲染(form: any, actions: RenderActions, doms: VNode[])
ts
interface RenderActions {
  close?: () => void
  submit?: () => void
  reset?: () => void
  resetAllFields: () => void
}

valueType slot

name描述
[prop]自定义表单项,参数 { form }

el-form-item slot

name描述
customSlot自定义 el-form-item,参数为 ({ form })