Antd的Modal组件支持嵌套调用,我们可以在父Modal的回调中打开子Modal,从而实现在Modal中弹出另一个Modal的效果。
示例代码如下:
import React, { useState } from 'react'; import { Modal, Button } from 'antd';
const ParentModal = () => { const [visible, setVisible] = useState(false); const [confirmLoading, setConfirmLoading] = useState(false);
const showModal = () => { setVisible(true); };
const handleOk = () => { setConfirmLoading(true); setTimeout(() => { setVisible(false); setConfirmLoading(false); }, 2000); };
const handleCancel = () => { setVisible(false); };
const showConfirm = () => { Modal.confirm({ title: 'Confirm', content: 'Are you sure you want to delete this item?', okText: 'Yes', cancelText: 'No', onOk() { console.log('OK'); }, onCancel() { console.log('Cancel'); }, }); };
return (
<>
Some contents...
export default ParentModal;
在这个示例代码中,我们在ParentModal的回调中打开了一个Modal.confirm的确认框,从而实现了在Modal中弹出另一个Modal的效果。需要注意的是,如果Modal.confirm中使用了onOk和onCancel回调函数,需要将事件处理函数分别写在ParentModal和子Modal中,以便处理对应的事件。