React使用 Ant Design 的From 组件时容易踩的坑

"本文介绍了在使用AntDesign时,Form表单与Modal组件结合使用时常见的一些问题及其解决方案。如何在Modal中回显表单数据,通过设置`initialValues`和`ref`来实现。在Modal关闭时,如何清空表单数据,通过在Form上设置`preserve={false}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、使用Ant Design的From表单容易遇到的问题:

1.2使用MoDal + From表单如何回显?

定义 formRef = React.createRef();
在From表单引用 ref={this.formRef} ,定义initialValues 初始化值

1.3 Modal组件关闭如何清空Form表单的值?

和 Form 一起配合使用时,设置 destroyOnClose 也不会在 Modal 关闭时销毁表单字段数据,需要在Form表单处设置 preserve={false}
1.2和1.3的代码如下:

   formRef = React.createRef();
<Modal
                    width={550}
                    title={title}
                    visible={visible}
                    maskClosable={false}
                    onCancel={exitModal}
                    destroyOnClose={true}
                    footer={[
                        <Button key="confirm" type="primary" onClick={() => {
                            $('#submit_btn').click();
                        }}>确定</Button>,
                        <Button key="cancel" type="link" onClick={exitModal}>取消</Button>]}
                >

                    <Form onFinish={(values) => createOrUpdateApprovalRule(values)}
                          ref={this.formRef}
                          initialValues={isAdd=="edit"?approvalRuleInfo:{}}
                          preserve={false}
                    >
                        <Form.Item label="项目" name="projectId"
                                   rules={[
                                       {
                                           required: true,
                                           message: 'Required item cannot be empty',
                                       },
                                   ]}
                                   style={{marginLeft: '158px'}}
                        >
                            <Select style={{width: '260px'}}
                                    allowClear={true}
                                    onChange={onProjectChange}
                                    value={projectValue}
                                    disabled={isAdd=="edit"}
                                    onClear={(e)=>onClearChangeByProject(e)}
                            >
                                {
                                    (projectOption || []).map((item, index) => {
                                        return <Option key={index} value={item.value}>{item.label}</Option>
                                    })
                                }
                            </Select>
                        </Form.Item>
                        <Form.Item label="问题类型 " name="issueTypeId"
                                   rules={[
                                       {
                                           required: true,
                                           message: 'Required item cannot be empty',
                                       },
                                   ]}
                                   style={{marginLeft: '130px'}}
                        >
                            <Select style={{width: '260px'}}
                                    allowClear={true}
                                    onChange={onIssueTypeChange}
                                    value={issueTypeValue}
                                    onClear={(e)=>onClearChangeByIssueType(e)}
                            >
                                {
                                    (issueTypeOption || []).map((item, index) => {
                                        return <Option key={index} value={item.value}>{item.label}</Option>
                                    })
                                }
                            </Select>
                        </Form.Item>
                        <Button style={{display: "none"}} htmlType="submit" id="submit_btn"/>
                    </Form>

1.4 当Form表单设置 initialValues时,如何清空Form表单指定的值?

定义onclear事件,"issueTypeId"是指的From表单中所对应的name

const onClearChangeByProject = (e)=>{
                this.formRef.current.setFieldsValue({
                    issueTypeId: undefined,
                    statusId:undefined,
                    approveActionId:undefined,
                    rejectActionId:undefined
                })

        }

<Form.Item label="项目" name="projectId"
                                   rules={[
                                       {
                                           required: true,
                                           message: 'Required item cannot be empty',
                                       },
                                   ]}
                                   style={{marginLeft: '158px'}}
                        >
                            <Select style={{width: '260px'}}
                                    allowClear={true}
                                    onChange={onProjectChange}
                                    value={projectValue}
                                    disabled={isAdd=="edit"}
                                    onClear={(e)=>onClearChangeByProject(e)}
                            >
                                {
                                    (projectOption || []).map((item, index) => {
                                        return <Option key={index} value={item.value}>{item.label}</Option>
                                    })
                                }
                            </Select>
                        </Form.Item>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值