因此,我尝试从 main.js 发送数据,以便在渲染器中将 div 绘制到我的 html 中,在无法使用 JSON 中的内容后,我决定尝试发送一个简单的字符串,问题仍然存在,一个无用的对象。(尝试过 stringify,尝试过“toString()”,但它只是变成了一个“对象”。 有趣的是,将数据从渲染发送到主要工作完美,我正在接收它并将其存储到一个工作正常的文件中。
Main.js
const createMainWindow = () => {
const win = new BrowserWindow({
width: 600,
height: 400,
webPreferences: {
nodeIntegration: true,
preload: path.join(__dirname, "preload.js")
}
})
win.loadFile('index.html')
win.webContents.openDevTools();
win.webContents.on('did-finish-load', () =>{
win.webContents.send('loadJSON', "hello");
})
};
预加载.js
contextBridge.exposeInMainWorld('electronAPI', {
storeJSON: (data) => ipcRenderer.send('storeJSON', data),
loadJSON: (data) => ipcRenderer.on('loadJSON', data)
})
vsticker.js(渲染器)
window.electronAPI.loadJSON((data) =>{
console.log(data);
});
我开始厌倦阅读电子文档以尝试找出发生这种情况的原因,我尝试等到页面加载,尝试使用字符串而不是我的 JSON 内容的方法,似乎没有任何效果,我只想完成这个。
另外,是的,我读过一个有非常相似问题的人的帖子,他的解决方案是等到页面完全加载,我已经尝试过这个,但它不起作用。
ipcRenderer.on
的签名:
ipcRenderer.on(channel, listener)
字符串channel
功能listener
IpcRendererEventevent
任何[]...args
如您所见,
listener
函数的第一个参数是event
,这就是您要记录的内容,而不是args
。这应该效果更好:
window.electronAPI.loadJSON((_event, data) => {
console.log(data);
});