antd对话框多个嵌套使用点击遮罩层不生效
时间: 2023-10-04 19:04:03 浏览: 111
多种方式单击出现遮罩层代码
默认情况下,Antd 对话框组件的遮罩层是可以关闭对话框的,但是在多个嵌套使用的场景下,可能会出现点击遮罩层关闭了不应该关闭的对话框的问题。
解决这个问题的方法是给需要禁止点击遮罩层关闭的对话框传入 `maskClosable={false}` 属性。
例如:
```jsx
import { useState } from 'react';
import { Button, Modal } from 'antd';
function MyComponent() {
const [visible1, setVisible1] = useState(false);
const [visible2, setVisible2] = useState(false);
const handleCancel1 = () => {
setVisible1(false);
};
const handleCancel2 = () => {
setVisible2(false);
};
return (
<>
<Button onClick={() => setVisible1(true)}>显示对话框1</Button>
<Modal visible={visible1} onCancel={handleCancel1} maskClosable={false}>
<Button onClick={() => setVisible2(true)}>显示对话框2</Button>
<Modal visible={visible2} onCancel={handleCancel2}>
对话框2内容
</Modal>
</Modal>
</>
);
}
```
在上面的代码中,我们在对话框1中设置了 `maskClosable={false}` 属性,这样就可以禁止用户在点击遮罩层时关闭对话框1,而只有点击对话框1中的取消按钮才会关闭对话框1。
阅读全文