electron 电子应用程序:如何在ipcRenderer.send()之后将数据传递回渲染器?

ar7v8xwq  于 2023-08-01  发布在  Electron
关注(0)|答案(1)|浏览(184)

我正在尝试使用ipcRenderer.on()接收到ipcRenderer.send()后将数据传递回渲染器。
出于安全原因,我将nodeIntegration设置为false,将contextIsolation设置为true。我已经在渲染器中尝试了ipcRenderer.on(),但似乎不可能,并且任何涉及“require()”的方法都不能在nodeIntegration设置为false的情况下工作。
我可以使用什么来传递数据?

q8l4jmvw

q8l4jmvw1#

使用preload.js文件和contextBridge

  • 举例来说:
    在预加载文件中:
const {contextBridge, ipcRenderer} = require('electron');
    
contextBridge.exposeInMainWorld('electron', {
    toMain:({args}, e) => {
        ipcRenderer.send(":toMain", {args});
    },
    fromMain: (callback) => {
        ipcRenderer.on(":fromMain", callback);
        return () => {
            ipcRenderer.removeListener(":fromMain", callback);
        };
    }
});

字符串

-将数据从main发送到render:

// main.js

mainWindow.webContents.send(":fromMain" , {args});

获取渲染过程中的数据:

// render.js

window.electron.fromMain((event , value)=> {
    console.log(value)
})

render发送数据到main:

// render.js

window.electron.toMain(data)

获取主进程数据:

// main.js

ipcMain.on(":toMain" , (event, value)=> {
    console.log(value)
})

相关问题