跳到主要内容

ModalForm - 弹窗表单

通过 schema 生成一个 弹窗 表单。

这个组件是 ModalSchemaForm 的结合,此可以透传它们两者的 API。

基础

基本的使用方法

非受控模式 (推荐)

利用 RAK 提供的 innerRef,无需额外定义 open 变量就能控制弹窗,用更加简洁。后面的用例默认使用该方式。

表单类型

打开的表单有三种类型:新增,编辑,只读。还能传入初始值。

onFinish

在 onFinish 函数里可以根据表单类型来调不同的接口。

onOpen

利用 onOpen 在弹窗打开时请求接口。

布局

通过 formProps 属性传入 SchemaForm 组件的 API, 来改变表单的布局。

多列排布

长表单校验时滚动到所在项

表单操作

显示与隐藏

使用 valueType=dependency 来做显示与隐藏。

表单数据

表单数据请参考 SchemaForm

约定式

SchemaForm 一样,ModalForm 同样支持约定式数据处理.

利用 innerRef 存储额外信息

SchemaForm 一样,ModalForm 也能利用 innerRef 存储额外数据.

API

ModalForm

ModalForm 类型是 ModalFormSelfTypeAntd Modal 的结合。

ModalFormSelfType

属性名描述类型默认值
innerRef非受控模式(推荐); 在open没传的情况下可以通过innerRef来打开弹窗;--
formRef用于获取form实例; 请使用formRef而不要通过form属性传入一个form实例来获取实例. 因为RAK组件对form实例进行了额外的封装, 一定要通过formRef来获取.React.MutableRefObject<ProFormInstance>--
columns表单项的配置描述;FormColumnType[](必选)
onFinish点击弹窗确定按钮后的回调;(values, formType, formData) => Promise | void--
onOpen打开弹框后的回调, 可以在这里请求数据;(formType, formRef, formData) => Promise | void--
formProps传递给表单的参数, 请参考SchemaForm组件的apiOmit<SchemaFormProps, 'innerRef' | 'formRef' | 'onFinish' | 'columns' | 'form'>--
confirmOnClose关闭弹窗提醒, 当表单项发生改动时会弹出确认框boolean | { title?: string; content?: string }{ title: '确认关闭', content: '表单项内容未保存, 是否确认关闭?' }

ModalFormInnerRefType

属性名描述类型默认值
openModal用于打开弹窗; formType 可用于在 onFinish 的时候判断表单类型;(formType?: FormType | undefined, initialValues?: object | null | undefined, cb?: (() => void) | undefined) => void(必选)
formType当前的表单类型FormType--
data可以存储一些额外数据Record<string, any>(必选)
setData存入数据; setData 和 react 的 setState 一样, 只需要传入关心的字段就可以, 不会覆盖其它的字段。(values: Record<string, any>) => void(必选)