出现的警告:
参考代码
````jsx
import React, {useEffect} from 'react';
import propTypes from 'prop-types';
import {Button, Form, Input, Modal} from 'antd';
import memoryUtil from '../../util/memoryUtil';
const {Item} = Form;
/*修改分类确认框组件*/
function UpdateCategory(props) {
const {showStatus, setShowStatus} = props;
const category = memoryUtil.category; // 从内存中读取分类
const [form] = Form.useForm(); // 获取form对象
useEffect(() => {
// 显示输入框默认字段
form.setFieldsValue({
categoryName: category.name,
});
}, [category.name, form]);
// 处理确定回调
const handleOk = () => {
setShowStatus(0); //关闭修改分类确认框
};
// 处理表单提交
const onFinish = (values) => {
console.log('UpdateCategory', values);
};
return (
<Modal
title="修改分类"
visible={showStatus === 2}
onOk={handleOk}
onCancel={() => setShowStatus(0)}
>
<Form
form={form}
onFinish={onFinish}
>
<Item name="categoryName">
<Input placeholder="请输入分类名称"/>
</Item>
<Item>
<Button htmlType="submit">提交</Button>
</Item>
</Form>
</Modal>
);
}
/*类型检测*/
UpdateCategory.propTypes = {
showStatus: propTypes.number.isRequired,
setShowStatus: propTypes.func.isRequired,
};
export default UpdateCategory;
````
问题原因
ant design在Modal中使用Form表单,并且通过Form.useForm(), 获取form对象将其挂载到指定的Form表单后仍会出现'Instance created by useForm is not connect to any Form element. Forget to pass form prop'警告这是由于ant design的Modal组件会在Form表单之前创建,因此当页面初始化时form对象会找不到可关联的Form表单,于是出现上述警告
解决办法