前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >react+antd组件 modal里面包裹使用form表单并获取提交事件

react+antd组件 modal里面包裹使用form表单并获取提交事件

作者头像
啦啦啦啦
发布2023-02-27 14:05:36
1.8K0
发布2023-02-27 14:05:36
举报
文章被收录于专栏:啦啦啦啦前端

1 先上图

我这里是点击“修改密码”那个按钮,然后跳到了modal框。(大家这里可以随便写一个按钮,然后给他一个点击事件让他可以显示modal框就好了,我这里着重讲解标题的内容)

2 贴代码

代码语言:javascript
复制
const [visible, setVisible] = useState(false);//antd 控制modal是否显示
const showMoal=()=>{
    // console.log("showMoal")
    setVisible(true);
}
const handleCancel = e => {
// console.log("cancel:",e);
setVisible(false);
};

function updatePasswordChange(){
    // console.log("0000");
    setVisible(false);
}

//Modal框
 <Modal
     title="密码修改"
     visible={visible}
     onCancel={handleCancel}
     footer={null}
 >
     
     <UpdatePassword updatePasswordChange={updatePasswordChange}></UpdatePassword>
</Modal>


//Form表单的提交事件
const onFinish = values => {
        // console.log('Success:', values); 
        IsUpdatePassword.commit(session.environment,values.newpassword,values.oldpassword,(response, errors) => {
                if (errors) {
                    message.error(errors[0].message);
                } else {
                    //修改密码成功
                    message.success('修改密码成功!');
                    props.updatePasswordChange();
                }
            },
            (errors) => {
                message.error(errors.source.errors[0].message);
            })
        
};

//Form表单部分
return(
        <>
            <Form
                {...layout}
                name="密码修改"
                initialValues={{
                    remember: true,
                }}
                onFinish={onFinish}
                onFinishFailed={onFinishFailed}
            >
                <Form.Item
                    label="旧密码"
                    name="oldpassword"
                    rules={[
                    {
                        required: true,
                        message: '请输入旧密码!',
                    },
                    ]}
                >
                    <Input.Password />
                </Form.Item>

                <Form.Item
                    label="新密码"
                    name="newpassword"
                    rules={[
                    {
                        required: true,
                        message: '请输入新密码!',
                    },
                    ]}
                    hasFeedback
                >
                    <Input.Password />
                </Form.Item>

                <Form.Item
                    name="confirm"
                    label="确认新密码"
                    dependencies={['newpassword']}
                    hasFeedback
                    rules={[
                    {
                        required: true,
                        message: '请确认新密码!',
                    },
                    ({ getFieldValue }) => ({
                        validator(rule, value) {
                        if (!value || getFieldValue('newpassword') === value) {
                            return Promise.resolve();
                        }
                        return Promise.reject('两次新密码不一致!');
                        },
                    }),
                    ]}
                >
                    <Input.Password />
                </Form.Item>


                {/* <Form.Item {...tailLayout} name="remember" valuePropName="checked">
                    <Checkbox>Remember me</Checkbox>
                </Form.Item> */}

                <Form.Item {...tailLayout}>
                    <Row>
                        <Col span={12}>
                            <Button type="primary" htmlType="submit">
                            确认
                            </Button>
                        </Col>
                        <Col span={12}>
                            <Button onClick={props.updatePasswordChange}>
                            取消
                            </Button>
                        </Col>
                    </Row>
                </Form.Item>
            </Form>
        </>
    );
}
  • 小结:

上面的代码你看起来可能有点乱,而且也运行不起来,那是肯定的!因为我只粘贴了整个项目的一部分。下面我来点睛:modal里面使用form表单并获取提交事件主要是使用了modal的**footer={null}**这个特性把外面的“确认取消按键隐藏”,然后使用我们自己的Form的“确定取消”按键,然后再通过Form的onFinish 事件来提交值和控制modal框的显示与消失。就ok了!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 先上图
  • 2 贴代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档