在 ProForm 中,可以通过 onFinish 方法来获取表单提交的数据。而在 ProForm.Item 中,可以使用 name 属性来指定该表单项的字段名称,并通过 initialValues 属性来初始化表单值。
当表单项的值发生变化时,可以通过 Form.Item 组件的 onValuesChange 属性来获取表单项的变化,并将值存储在组件的 state 或 props 中。这样,当用户提交表单时,就可以从 state 或 props 中获取表单项的值,进行相应的操作。
以下是一个示例代码,用于演示如何在 ProForm 中获取表单提交的数据:
import React, { useState } from 'react';
import { ProForm, ProFormText, ProFormSelect, ProFormDatePicker, ProFormDateTimePicker, ProFormTextArea } from '@ant-design/pro-form';
const MyForm = () => {
const [formValues, setFormValues] = useState({});
const onFinish = (values) => {
console.log('form values:', values);
};
const handleValuesChange = (changedValues, allValues) => {
console.log('changed values:', changedValues);
console.log('all values:', allValues);
setFormValues(allValues);
};
return (
<ProForm onFinish={onFinish} onValuesChange={handleValuesChange}>
<ProFormText name="username" label="用户名" />
<ProFormSelect name="gender" label="性别" options={[{ value: 'male', label: '男' }, { value: 'female', label: '女' }]} />
<ProFormDatePicker name="birthday" label="出生日期" />
<ProFormDateTimePicker name="createdAt" label="创建时间" />
<ProFormTextArea name="description" label="描述" />
</ProForm>
);
};
在这个示例中,ProForm 组件的 onFinish 方法被定义为 onFinish={onFinish},并在表单提交时被调用。同时,ProForm 组件的 onValuesChange 方法被定义为 onValuesChange={handleValuesChange},并在表单项值发生变化时被调用。
在 handleValuesChange 方法中,changedValues 和 allValues 分别代表了发生变化的表单项和所有表单项的值。这些值可以通过 setFormValues 方法存储在组件的 state 中。
在 onFinish 方法中,可以通过 values 参数获取表单提交的数据,从而进行相应的操作。
最后,我这里再总结一下之前写业务时ProForm的一些心得和注意事项,供大家了解:
- 表单布局:ProForm 组件提供了多种表单布局,例如水平布局、垂直布局和内联布局。根据需求选择合适的布局样式,可以通过
layout属性进行设置。 - 表单验证:ProForm 内部集成了强大的表单验证功能,可以通过
rules属性来设置字段的验证规则。可以使用预定义的验证规则(如required、email、url等),也可以自定义验证函数。 - 自定义组件:除了内置的表单组件(如
ProFormText、ProFormSelect等),ProForm 还支持自定义组件。可以通过render属性来渲染自定义的表单控件,这样可以满足更灵活的需求。 - 表单联动:在一些场景下,表单项之间可能存在联动关系,一个字段的值的变化会影响其他字段的显示或可用性。ProForm 提供了
dependencies属性来实现表单联动效果。可以根据字段的值来动态改变其他字段的配置。 - 表单重置:ProForm 内置了重置表单的功能,可以通过
resetFields方法来重置表单字段的值。可以将form实例传递给组件,然后在需要的时候调用form.resetFields()方法来实现表单重置。 - 表单提交:ProForm 提供了多种提交表单的方式,可以通过
onFinish、onFinishFailed等属性来处理表单提交的逻辑。可以在onFinish回调函数中进行表单数据的处理或发送网络请求。 - 国际化支持:ProForm 支持国际化,在使用 ProForm 组件时可以通过
locale属性来设置组件的语言。可以根据实际需要配置不同的语言包。