簡體   English   中英

將數據從渲染過程發送到Electron中的渲染器過程

[英]Send Data from render process to renderer process in Electron

我正在使用Electron開發桌面應用程序,場景是我有2個BrowserWindow,從FirstBrwoserWindow,我按鈕點擊后轉到SecondBrowserWindow。 我已經在FirstBrwoserWindow的按鈕上實例化了SecondBrowserWindow,以避免Object被破壞Exception。
根據Electron,如果我們想要在進程之間發送數據,我們必須使用IPC。 所以實際問題從這里開始,我在FirstBrwoserWindow的渲染器文件中創建SecondBrowserWindow對象,而對於IPC我需要在主進程中獲取SecondBrowserWindow對象。

如何在main.js中獲取SecondBrowserWindow對象並使用IPC.on ????

我解決這個問題的方法是使用ipcRenderer將數據從第一個窗口傳遞到主進程,然后使用BrowserWindow.webContents.send()將其與ipcMain一起傳遞到第二個窗口。

看起來有點像這樣。

窗口1

...
// Emit an ipc message with your data
ipcRenderer('your-message', { foo: 'bar' });
...

主要過程

...
let window1 = new BrowserWindow(...);
let window2 = new BrowserWindow(...);
...
// when ipc message received pass it on to second window object with webContents
ipcMain.on('your-message', (event, payload) => {
  window2.webContents.send('your-relayed-message', payload);
});
...

窗口2

...
// when ipc messaged received in second window do what you want with the data
ipcRenderer.on('your-relayed-message', (event, payload) => {
  console.log(payload);
});
...

您可以通過更多方式實現這一目標,但我建議您:

1)當您收到在渲染器中打開第二個BrowserWindow的輸入時, 向main.js發送一條消息

2) 從main.js打開第二個BrowserWindow,這樣你就可以控制它並以更干凈的方式向它發送消息。

通過這種方式,您可以在沒有通信錯誤的情況下關閉以前的BrowserWindow,並且N BrowserWindows具有更具可伸縮性可讀性的邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM