javascript - 只有在所有组件都准备好之后,如何从电子发送事件到反应组件?
问题描述
我有一个电子应用程序,我正在尝试使用 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
谢谢你。
解决方案
我认为首先你应该告诉电子实际功能正在执行。</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
});
}, []);
推荐阅读
- php - Laravel Model SQL Server:从存储过程中获取输出参数
- java - javax.mail.transport 未发送 1000 或 1000+ 个活动电子邮件 ID 的警报
- wix - Wix 的自定义操作调用 vb 脚本失败
- php - 模型和视图在codeigniter中有直接关系吗
- log4net - 如何将 log4net 配置写入 appsettings.json?
- api - 在 HTML 中为每个选项卡选择提供聚合数据的最佳实践是什么?
- unit-testing - ngxs:如何测试动态选择器
- php - 将 PHPSpreadsheet 中的所有文本居中并使单元格扩展以填充上下文
- linux - 从 ssh 隧道上运行的命令获取返回码
- c# - C# MVC 中的 jquery.i18n