检测点击电子托盘应用程序的 popUpContextMenu 项目点击

Detect a click on popUpContextMenu item click for Electron Tray Application

我试图创建一个名为“清除缓存”的右键单击菜单项,它清除了我正在工作的程序的缓存on.The问题是使用 ipcMain 发送事件的函数正在获取 运行 右键单击​​托盘项目,而不是单击实际的“清除缓存”按钮时。这是因为我的菜单设置如下:

// clear cache function         
const clearCache = () => {             
    let response = "Successfully cleared cache.";             
    mainWindow.webContents.send('clearCacheResponse', response);             
    console.log(response)         
};         
const menu = [             
    { label: '╸Clear all Cache╺', role: clearCache() },             
    { label: 'Separator',       type: 'separator'},             
    { label: '╸Quit Rich Presence╺', role: 'quit' },         
];         
tray.popUpContextMenu(Menu.buildFromTemplate(menu))

其中标签中的角色是一个函数。这个问题是它 运行s 当对象第一次初始化时,这意味着它会在您第一次右键单击时清除缓存。有没有其他方法可以使用 Electron 的 popUpContextMenu 运行 自定义函数,或者我是否坚持尝试找到解决方法。我已经做了相当多的研究,但还没有找到一种方法来仅在单击时触发此事件 label.Here 是我试图创建的右键单击上下文菜单的完整代码:

rightClick = () => {// clear cache function
const clearCache = () => {
    let response = "Successfully cleared   cache.";
    mainWindow.webContents.send('clearCacheResponse', response);
    console.log(response)
};
const menu = [
    { label: '╸Clear all Cache╺', role: clearCache() },
    { label: 'Separator',       type: 'separator'},
    { label: '╸Quit Rich Presence╺', role: 'quit' },
];
tray.popUpContextMenu(Menu.buildFromTemplate(menu))}

tray.on('right-click', () => {
    rightClick()
});

TL:DR;我的函数 运行s 当对象首次初始化时,试图找到一些方法来仅在单击上下文菜单项的标签时触发该函数。

试过: 要创建右键单击上下文菜单,您可以在其中右键单击并具有以下选项:

我期待的是: 打开菜单并选择正确的选项,并使该选项正确出现。

实际发生了什么: Clearing Cache 函数 运行 在我第一次初始化菜单对象时立即清除,这意味着每次右键单击时都会清除用户的缓存。

我正在使用: role: clearCache()。 为自定义函数编写此代码的正确方法是: click: clearCache

(感谢 vanowm 告诉我如何解决这个问题,直到现在我才意识到这在文档中!)