我就是想不通。如果我是对的,通常你在主文件中使用“ipcMain”(在我的例子中是 main.js)。但是我使用了colon-ide,并且在其他地方定义了ipcMain。 我想创建一个新窗口。创建新窗口所需的一切都在 main.js 文件中,但信号在其他地方。所以我需要向 main.js 发送一个“创建窗口”信号。事实上,我是从一个定义了 ipcMain 的文件中发送的。
问题来了: 在 main.js 中,我使用以下内容:
const ipc = require('electron').ipcRenderer;
ipc.on('someSignal', function (event, structure) {
console.log("something");
});
我收到一个错误,ipc 未定义。
当我使用以下内容时:
const ipc = require('electron').ipcMain;
ipc.on('someSignal', function (event, structure) {
console.log("something");
});
什么都没发生。它不听,我相信我应该只有一个ipcMain,所以这一定是错误的。
我做错了什么?如果您需要更多代码,请告诉我。
为了详细说明,让我向您展示这个: 我有一个 functions.js 文件,可以在其中调用事件。请忽略“结构”变量。
const ipc = require('electron').ipcMain;
function someFunction() {
console.log("function is invoked");
let structure = 0;
mainWindow.webContents.send('someSignal', structure);
}
“someFunction”在某个时候被调用 - 我在控制台中收到“函数被调用”消息,所以这部分工作。
在 editor.js 中定义了 ipcRenderer,如果我把监听器函数放在这里:
const ipc = require('electron').ipcRenderer;
ipc.on('someSignal', function (event, structure) {
console.log("something");
});
它有效。 “某物”被打印出来。
但是,我需要在 main.js 文件中添加侦听器,因为那是我创建新窗口的函数所在的位置。但是监听器在那里不起作用。如果我使用 ipcRenderer,它会保持未定义状态,并在我执行 ipc.on 函数时抛出错误。如果我使用 ipcMain 它被定义(typeof 返回一个对象),所以看起来这就是我必须使用的。但什么也没发生。
这是因为我试图在 2 个 ipcMain 之间发送消息吗?我可能会尝试使用全局函数作为解决方法。
答案 0 :(得分:0)
要访问 BrowserWindow 中的 generateFakeAnswer = () => {
const getRealAnswer = (state) => {
return state.valueOne + state.valueTwo + state.valueThree;
}
this.setState({
fakeAnswer: Math.floor(Math.random() * 10) + getRealAnswer(this.state)
})
}
API,您需要在构造函数中启用 require("electron")
。
nodeIntegration