Electron .ipcRenderer 触发两次

dmi*_*mid 5 electron

我正在使用 Electron 创建(第一次)一个仅适用于 Mac 的小型应用程序。我正在尝试使用 ipcRenderer 在我的应用程序菜单和主 BrowserWindow 中的内容之间进行通信。

我将菜单设置如下以发送消息“选择活动”:

const {Menu} = require('electron')
const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow

const template = [
{
label: 'Fonts',
submenu: [
    {
        label: 'Select All Acitve Fonts',
        accelerator: 'Command+A',
        click (item, focusedWindow) { if(focusedWindow) focusedWindow.webContents.send('select-active') }
    },...
Run Code Online (Sandbox Code Playgroud)

我收到的信息如下:

const ipcRenderer = require('electron').ipcRenderer;

ipcRenderer.on('select-active', function () {
    console.log('SELECTED');
})
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,每次选择菜单命令时,消息都会在控制台中记录两次。我哪里错了?

小智 1

使用 .once 代替怎么样?

ipcRenderer.once('select-active', function () {
console.log('SELECTED');
Run Code Online (Sandbox Code Playgroud)

})