antd 的 form resetFields

关于antd中 react 的 form 表单的赋值和重置的问题
如果你的表单后续需要重置,那么在给表单赋值的时候,需要用

import {getDetail} form './sever'
const [form] = Form.useForm();  // Your form
....
// get your api informations
 const { data: res } = await getDetail(Id);

//set form, don't  use setState to set your  information
 form.setFieldsValue(res?.data);   // res?.data是链式写法,效果等同于 res && res.data
.....


// when you want to reset your form,use this sentences
form.resetFields()
//over--

...
return (
<>
  <Modal
     onOk={() => {
          form.validateFields().then((values) => {
              onSaveFinish(values);
            }) .catch((info) => {
              console.log('Validate Failed:', info);
            });
        }}
   >
    <Form
          form={form}
          onFinish={onSaveFinish}
          validateMessages={validateMessages}
          layout="vertical"
        >
        ....
    // your form content
   </Form>
 </Modal>
</>
)

以上说明:表单在赋值时不要用 setState 给表单赋 initValues, 这样很可能会使表单的值无法清空,下面是错误的使用方式

// 以下是错误使用方式
  const [initialValues, setInitialValues] = useState({});

// get your api informations
 const { data: res } = await getDetail(id);
 setInitialValues(res?.data)


.....
 <Form
          form={form}
          onFinish={onSaveFinish}
          initialValues={initialValues}
          validateMessages={validateMessages}
          layout="vertical"
        >
        ....
    // your form content
   </Form>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容