javascript - Material-ui Dialog:在对话框外操作 Escape 按钮和鼠标点击
问题描述
我正在使用 material-ui 的对话框:当用户按下“退出”按钮时,会打开一个对话框并出现“是”或“否”按钮,询问用户是否真的想要退出。
当用户单击“退出”按钮或只是在窗口外单击时,它会将他退出 - 就好像他按下“是”一样。我该如何控制这个?我希望那些激活“否”按钮。
谢谢!
解决方案
Ciao,您可以使用 Mui 的 Confirmation Dialog 变体Dialog
。通过这种方式,您可以强制用户单击按钮Yes
或No
在您的对话框中。
这里我做了一个codesandbox的例子(灵感来自Mui Dialog page)
基本上我用一个Button
调用Dialog的组件做了一个简单的:
return (
<div className={classes.root}>
<Button onClick={handleClickListItem}>sign out</Button>
<ConfirmationDialogRaw
classes={{
paper: classes.paper
}}
keepMounted
open={open}
onClose={handleClose}
/>
</div>
);
ConfirmationDialogRaw
组件:
function ConfirmationDialogRaw(props) {
const { onClose, open, ...other } = props;
const handleCancel = () => {
// here just close the confirmation dialog
console.log("stay in");
onClose();
};
const handleOk = () => {
// here manage signout
console.log("sing out");
onClose();
};
return (
<Dialog
disableBackdropClick
disableEscapeKeyDown
maxWidth="xs"
aria-labelledby="confirmation-dialog-title"
open={open}
{...other}
>
<DialogTitle id="confirmation-dialog-title">Sing Out</DialogTitle>
<DialogContent dividers>
<Typography>Are you sure you want to exit?</Typography>
</DialogContent>
<DialogActions>
<Button autoFocus onClick={handleCancel} color="primary">
No
</Button>
<Button onClick={handleOk} color="primary">
Yes
</Button>
</DialogActions>
</Dialog>
);
}
魔术是由道具disableBackdropClick
和组件完成disableEscapeKeyDown
的。Dialog
推荐阅读
- javascript - 我应该如何在我的图表中应用日期选择器
- wpf - WPF UserControl 中的资源 URI,托管在 Windows 窗体应用程序中
- javascript - 如何使用 JSON 数据创建带有菜单和子菜单的 Bootstrap4 导航栏?
- c++ - 我想在函数中声明一个数组,其中主对接中的数组大小出现错误
- vb.net - PropertyGrid 下拉列表 vb.net
- arrays - 在 QBasic 中使用用户定义的 TYPE 中的数组
- python - SQLAlchemy-utils:创建视图“如果不存在”
- php - 如何在 php 页面中更新 Table onclick 按钮
- ios - 在没有 CocoaPods 的情况下将 Firebase 添加到我的 iOS 项目时出错
- c++ - 用 C/C++ 编写库时使用哪种类型的#include("" 或 <>)