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-item 的 FormItemProps,并扩展(详见 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-item;true 时默认 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 })