首页 > 解决方案 > 只有在所有组件都准备好之后,如何从电子发送事件到反应组件?

问题描述

我有一个电子应用程序,我正在尝试使用 ReactJs。我有代码main.js发送一些dom-ready事件数据:

mainWindow.webContents.on('dom-ready', function () {
    dao.getIncomes(function (data) {
        mainWindow.webContents.send('income-data', data);
    });
}

然后我有 React 组件,我试图为这个事件设置一个监听器:

useEffect(() => {
    ipcRenderer.on('income-data', function (event, data) {
        // some code
    });
}, []);

有时,组件仅在事件已发送时才启动此效果。并且侦听器不会收到此数据。

在这种情况下如何正确设置监听器?O 可能我应该稍后在其他事件上发送事件,而不是dom-ready

谢谢你。

标签: javascriptreactjselectronuse-effect

解决方案


我认为首先你应该告诉电子实际功能正在执行。</p>

const { ipcMain } = require('electron')
ipcMain.on('react-effect-executed', (event, arg) => {
  dao.getIncomes(function (data) {
    mainWindow.webContents.send('income-data', data);
  });
})

useEffect(() => {
    ipcRenderer.send('react-effect-executed', '');
    ipcRenderer.on('income-data', function (event, data) {
        // some code
    });
}, []);

推荐阅读