我有一个MUI对话框,当我在外面点击时,它不能被删除。我想添加一个震动效果或任何效果的对话框时,用户点击离开,使用户知道,点击离开被阻止。此外,我想防止用户使用Esc按钮来删除对话框太多。建议的答案可以部分解决我的问题,只是Esc按钮使用disableEscapeKeyDown属性,但不是我的问题的其余部分,因为disableBackdropClick不能应用。
这是我的代码。在handleClose函数中应用clickAway。但我想添加一个效果,使用户知道,点击离开是不允许的,并防止使用Esc按钮删除对话框。有什么建议吗?我找不到任何解决办法。谢谢
export const StatusModalFail = (): ReactElement => {
const [open, setOpen] = useState(true);
const handleClose = (event, reason) => {
if (reason !== 'backdropClick') {
setOpen(false);
}
};
const handleCloseButton = () => {
setOpen(false);
};
return (
<Stack
justifyContent="center"
alignItems="center"
>
<Dialog
open={open}
PaperProps={{
sx:{
width: '100%',
maxWidth: '500px!important',
height:'100%',
maxHeight:'250px!important',
},
}}
onClose={handleClose}
>
<DialogContent>
<Box
sx={{
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
}}
>
<CrossIcon
style={{
color: '#fa6757',
width: 48,
height: 48,
padding: 30,
}}
/>
</Box>
1条答案
按热度按时间whlutmcx1#
这是一个关于你如何做到这一点的例子。我在这里提供codesanbox:https://codesandbox.io/s/hardcore-wing-0mvnqc?file=/demo.js
const [shake, setShake] = React.useState(false);
shake
状态作为属性传递给对话框组件styled
对话框中调用shake
状态.MuiDialog-container
以应用动画: