gpt4 book ai didi

reactjs - ipcRenderer.on 未在应用程序的 React 端触发

转载 作者:行者123 更新时间:2023-12-03 12:38:16 26 4
gpt4 key购买 nike

我正在使用 Electron 在我的 Ionic React 应用程序上制作桌面版本。我已经决定闪屏只会在 React 应用程序说它可以消失时才会消失。
index.ts (主要的 Electron 文件),我创建了一个这样的事件监听器:

ev = splashScreen.on(splashScreen.events.APP_READY_TO_START, () => {
splashScreen.off(ev, true);

splashScreen.destroy();
mainWindow.show();
}, true);
这会监听 OL-APP_START_SPLASH_CLOSE事件通过 ipcMain . on函数如下所示:
on(event: string, fn: () => any, isExternal?: boolean) {
this.activeEvents.push({
[isExternal ? "EXTERNAL_" + event : event]: fn
});
if (isExternal) ipcMain.on(event, fn);
}
在事件监听器之后,我调用了一个更新函数,它(暂时)延迟执行 7 秒。之后,我发出一个事件:
splashScreen.emit(splashScreen.events.UPDATE_CHECK_FINISHED, true);
在哪里 emit是:
emit(event: string, isExternal?: Boolean) {
this.activeEvents.forEach(e => {
if (!Object.keys(e)[0].startsWith("EXTERNAL_")) e[event].bind(this).call(); //If it's an external event (i.e. `ipcMain`) then don't run callback
});

if (isExternal) this.splashScreen.webContents.send(event);
}
在 React 方面,在 componentDidMount我有:
ipc.on("OL-CHECKED_FOR_UPDATES", () => {
ipc.send("OL-APP_START_SPLASH_CLOSE");
});
这将仅在检查完更新后才发出关闭初始屏幕的信号。当我发出 OL-CHECKED_FOR_UPDATES事件应该调用此事件监听器,但事实并非如此。
我能够很好地发送事件( ipc.send 自己工作),但无论我做什么,我都无法让它监听事件。
我知道这些正在被触发,因为如果我将事件监听器移动到任何其他脚本(即 index.ts)中,事件监听器将触发,所以它只是在那里它不会触发。
这可能是什么原因?

最佳答案

只需要在上面 sleep 。当然,如果我创建两个不同的窗口,它们将有不同的渲染进程,所以当我在一个窗口上发出事件时,我将无法在另一个窗口上接收它。
我所要做的就是从主窗口(显示 react 应用程序的窗口)而不是启动屏幕发送事件。

关于reactjs - ipcRenderer.on 未在应用程序的 React 端触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65270454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com