destroyOnClose使用之后关闭模态框在打开,里面的值还在
时间: 2024-03-17 21:43:57 浏览: 85
Antd的一些用法操作
如果你设置了 `destroyOnClose={true}` 属性后,关闭模态框时其中的元素会被销毁,那么重新打开模态框时其中的表单值应该是空的。如果你发现重新打开模态框时表单值还在,可能是因为你使用了受控组件并没有正确地更新表单的值。
在 Ant Design 中,如果你使用了 `Form` 组件来管理表单数据,那么可以通过 `form.resetFields()` 方法来重置表单的值。当模态框打开时,你可以先调用 `form.resetFields()` 方法来重置表单的值,然后再设置模态框的可见性。
下面是一个例子,展示了如何在关闭模态框时销毁其中的元素,并在重新打开模态框时重置表单的值:
```jsx
import { useState } from 'react';
import { Modal, Form, Input, Button } from 'antd';
function MyModal() {
const [visible, setVisible] = useState(false);
const [form] = Form.useForm();
const handleOk = () => {
form.submit();
};
const handleCancel = () => {
setVisible(false);
};
const onFinish = (values) => {
console.log(values);
setVisible(false);
};
const resetForm = () => {
form.resetFields();
};
return (
<Modal
title="My Modal"
centered
width={500}
visible={visible}
onOk={handleOk}
onCancel={handleCancel}
footer={null}
closable={false}
destroyOnClose={true}
afterClose={resetForm}
>
<Form
form={form}
autoComplete="off"
labelCol={{ span: 9 }}
wrapperCol={{ span: 15 }}
onFinish={onFinish}
>
<Form.Item labelCol={{ span: 3 }} wrapperCol={{ span: 21 }} label="认领原因" name='userRemark' >
<Input.TextArea style={{ height: "80px" }} />
</Form.Item>
<Form.Item className={"foot-form"}>
<Button onClick={() => { setVisible(false) }} style={{ marginRight: "20px" }}>取消</Button>
<Button type="primary" htmlType="submit">确定</Button>
</Form.Item>
</Form>
</Modal>
);
}
```
在上面的例子中,我们使用了 `Form` 组件来管理表单数据,并在 `afterClose` 回调函数中调用了 `form.resetFields()` 方法来重置表单的值。当模态框打开时,表单的值将会被重置为空,用户输入后点击确定按钮时,表单的值会被提交并打印到控制台上。关闭模态框时,其中的元素会被销毁,同时表单的值也会被重置为空。
阅读全文