gpt4 book ai didi

javascript - 如何防止 Electron 中出现多个对话框

转载 作者:行者123 更新时间:2023-12-03 12:29:08 24 4
gpt4 key购买 nike

我用 Electron 的dialog.showMessageBox打开一些消息框。

但是目前它正在打开多个盒子。我想一次只打开一个消息框。

fetch(payload.url)
.then(res => res.json())
.then(data => {
download(BrowserWindow.getFocusedWindow(), data.presigned_url, {
saveAs: true,
// openFolderWhenDone: true,
showBadge: false,
filename: payload.filename
}).then(item => {
const filePath = item.getSavePath();
dialog.showMessageBox(
BrowserWindow.getFocusedWindow(),
{
type: 'info',
title: 'Download Status',
message: 'Download Complete',
buttons: ['Close', 'Open Folder', 'Open'],
},
dialogId => {
switch (dialogId) {
case 0:
break;
case 1:
shell.showItemInFolder(filePath);
break;
case 2:
shell.openItem(filePath);
default:
break;
}
},
);
});
});

例如,当一个新的消息框打开时,我想关闭上一个消息框;或者,如果已经打开了一个消息框,则不允许打开下一个消息框。

任何形式的帮助,将不胜感激。

最佳答案

在我的项目中
我提供了一个state属性,例如isOpenBrowseFileDialog,并像一个标志一样使用它。如果启动对话框,则将标志设置为true,这将有助于防止打开许多对话框。

browseFiles = async (e) => {
e.preventDefault();
const ref = this;
const { isOpenBrowseFileDialog } = this.state;
if(isOpenBrowseFileDialog === false) {
this.setState({
isOpenBrowseFileDialog: true
});
remote.dialog.showOpenDialog({
properties: ['openFile', 'multiSelections']
}, async (files) => {
if (files !== undefined) {
await ref.handleFilesAfterAdding(files);
}
ref.setState({
isOpenBrowseFileDialog: false
});
});
}
}

关于javascript - 如何防止 Electron 中出现多个对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49097149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com