ElectronJS React自定义菜单事件未定义

时间:2018-08-17 11:08:25

标签: reactjs events electron

嗨,我将ElectronJS与React结合使用,试图在我单击lectorn js菜单上的保存按钮时触发一个事件。我正在尝试侦听组件中的事件,但是单击菜单项时出现此错误;

Uncaught Exception:
ReferenceError: Event is not defined
    at click (/private/Apps/hosts/src/electron-starter.js:38:21)

这是我的代码;

const template = [
    {
        label: 'File',
        submenu: [
            {
                label: 'Save', accelerator: 'Cmd+S',
                click() {
                    console.log('send event');
                    new Event('save-hosts-file');
                }
            },
        ]
    },
];

以及在我的组件中;

componentDidMount() {

        document.getElementsByTagName("body")[0].addEventListener('save-hosts-file', function (e) { console.log('save file');}, false)
    }

关于为什么发生这种情况的任何想法?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

const template = [
    {
        label: 'File',
        submenu: [
            {
                label: 'Save', accelerator: 'Cmd+S',
                click() {
                    mainWindow.webContents.send('save-hosts-file');
                }
            },
        ]
    },
];

componentDidMount() {
  ipcMain.on('save-hosts-file', (event) => {
     console.log('save file');
   });
 }

您应该记住两件事:

1)从电子发送事件到反应并在反应中接收

发送事件使电子起反应- mainWindow.webContents.send
接收电子发出的反应中的事件- ipcRenderer.on

2)发送事件从对电子的反应到电子的接收

从电子反应发送事件- ipcRenderer.send
从反应发送的电子中接收事件- ipcMain.on