Electron JS事件多次触发

Electron JS event is firing multiple times(Electron JS事件多次触发)
本文介绍了Electron JS事件多次触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

在 electronJS 中,我创建了一个自定义应用程序菜单,我在其中将事件从主进程发送到渲染器进程,但现在发生的事情是我正在监听该事件多次运行的位置.因此,如果有人可以帮助我找到并解决错误.谢谢.这是我的代码:

In electronJS, I have created a custom application menu in which I'm sending the event from main process to renderer process, but now what happening is where I'm listening this event is running multiple times. So, if anyone could help me to find and resolve the error. Thanks. Here's my code:

label: test,
          click: function (item, focusedWindow, event) {
            mainWindow.webContents.send('test')
          }

ipcRenderer.on('test', (event, action) => {
      console.log('called')
    })

现在这个console.log被打印了多次.

Now this console.log is printed multiple times.

原代码:

{
  label: constants.APPLICATION_MENU.ARTICLE.MENU.KEYWORD.LABEL,
  accelerator: constants.APPLICATION_MENU.ARTICLE.MENU.KEYWORD.ACCELERATOR,
  click: function (item, focusedWindow, event) {
    contents.send(constants.APPLICATION_MENU.ARTICLE.MENU.KEYWORD.EVENT)
  }
}

created: function () {
ipcRenderer.on(constants.APPLICATION_MENU.ARTICLE.MENU.KEYWORD.EVENT, () => {
  console.log('clicked')
})

},

推荐答案

尝试在你的关闭窗口函数中使用 ipc.removeAllListeners('your_name_channel'):

Try using ipc.removeAllListeners('your_name_channel') in your closed window function:

Your_Window.on('closed',()=>{
    ipc.removeAllListeners('your_name_channel');
})

这篇关于Electron JS事件多次触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Electron app. Multiple html files(电子应用程序.多个html文件)
Using ipc in Electron to set global variable from renderer(在 Electron 中使用 ipc 从渲染器设置全局变量)
Saving JSON in Electron(在 Electron 中保存 JSON)
Transparent Windows on Linux (Electron)(Linux 上的透明窗口(电子))
Can MongoDB be packaged in an Electron app?(MongoDB 可以打包在 Electron 应用程序中吗?)
How to get a unique PC ID via Electron?(如何通过 Electron 获得唯一的 PC ID?)