父组件的写法
import React, { useState, useRef } from "react";
let addRuleFormRef = useRef(null);
<AddRuleForm ref={addRuleFormRef} />
const submit = () => {
let form = addRuleFormRef.current?.getForm();
let formOpts = form.getFieldsValue();
form.validateFields();
};
子组件表单的写法
import { Button, Checkbox, Col, Form, Input, Row, Select } from "antd";
import type { FormInstance } from "antd/es/form";
import React, { useImperativeHandle } from "react";
const AddRuleForm = (props: any, ref: any) => {
const addFormRef = React.createRef<FormInstance>();
useImperativeHandle(ref, () => ({
getForm: () => {
return addFormRef.current;
},
}));
const selectStyle = { width: "95%" };
return (
<Form
name="basic"
ref={addFormRef}
initialValues={{ remember: true }}
autoComplete="off"
>
<Row>
<Col span={12}>
<Form.Item
label="规则名称"
name="name"
rules={[{ required: true, message: "请输入规则名称!" }]}
>
<Input style={selectStyle} placeholder="请输入规则名称" />
</Form.Item>
</Col>
</Row>
</Form>
);
};
export default React.forwardRef(AddRuleForm);