Electron-IPC-отправка данных между окнами
в основном процессе я создаю окно под названием mainWindow
. При нажатии кнопки я создаю новый browserWindow
под названием notesWindow
.
то, что я хочу сделать, это отправить данные из notesWindow
to mainWindow
то, что я сделал, используется IPC send для первой отправки данных из notesWindow
в основной процесс, получить данные о главном процессе, а затем отправить эти данные в mainWindow
, а mainWindow
не удается получить событие отправителя. Отправка данных в основной процесс работает нормально, но из основного процесс browserWindow, похоже, не работает.
main.js
const ipcMain = require('electron').ipcMain;
ipcMain.on('notes', function(event, data) {
console.log(data) // this properly shows the data
event.sender.send('notes2', data);
});
noteWindow.js
const ipcRenderer = require('electron').ipcRenderer;
ipcRenderer.send('notes', "new note");
главное окно.js
const ipcRenderer = require("electron").ipcRenderer;
ipcRenderer.on('notes2', function(event, data) {
// this function never gets called
console.log(data);
});
может кто-нибудь объяснить, что я делаю неправильно? Заранее спасибо!
1 ответов
mainWindow
не может получить событие, потому что оно не отправляется ему. The events.sender.send()
код main.js
отправит данные обратно тому, кто отправил notes
событие, которое в данном случае является noteWindow
. Так что notes2
событие отправляется обратно в noteWindow
вместо mainWindow
.
отправить notes2
событие mainWindow
, проверьте webContents.send()
. Это позволяет основному процессу отправлять данные через события в определенное окно. После некоторых изменения в main.js
это будет выглядеть примерно так:
ipcMain.on('notes', function(event, data) {
mainWindow.webContents.send('notes2', data);
});