react antd 如何在Modal的确认按钮上获取Modal中From的表单数据
时间: 2024-02-27 18:52:49 浏览: 240
react使用antd表单赋值,用于修改弹框的操作
在React Antd中,可以使用`form`属性将`Modal`组件中的表单与父组件进行关联,然后在`Modal`中的确认按钮上通过`form.submit()`方法来获取表单数据。
具体实现步骤如下:
1. 在`Modal`组件中添加`form`属性,使表单与父组件进行关联:
```jsx
import { Form, Input, Modal } from 'antd';
const MyModal = ({ visible, onCancel, onOk, form }) => {
const { getFieldDecorator } = form;
return (
<Modal
visible={visible}
onCancel={onCancel}
onOk={onOk}
>
<Form>
<Form.Item label="Username">
{getFieldDecorator('username', {
rules: [{ required: true, message: 'Please input your username!' }],
})(<Input />)}
</Form.Item>
<Form.Item label="Password">
{getFieldDecorator('password', {
rules: [{ required: true, message: 'Please input your password!' }],
})(<Input.Password />)}
</Form.Item>
</Form>
</Modal>
);
};
export default Form.create()(MyModal);
```
2. 在`Modal`组件中的确认按钮上通过`form.submit()`方法来获取表单数据:
```jsx
import { Form } from 'antd';
import MyModal from './MyModal';
const MyParentComponent = () => {
const handleSubmit = (e) => {
e.preventDefault();
const { form } = myFormRef.current;
form.validateFields((err, values) => {
if (!err) {
console.log(values); // 输出表单数据
form.resetFields();
}
});
};
const myFormRef = useRef(null);
return (
<div>
<button onClick={() => myModalRef.current.showModal()}>Open Modal</button>
<MyModal
wrappedComponentRef={(form) => myFormRef.current = form}
visible={visible}
onCancel={() => setVisible(false)}
onOk={handleSubmit}
/>
</div>
);
};
export default MyParentComponent;
```
在上面的代码中,我们通过`form.validateFields(callback)`方法来校验表单数据,并且如果校验通过,就可以通过`values`参数获取到表单数据。同时,我们也可以通过`form.resetFields()`方法来重置表单数据。
阅读全文