Electron generate preload
handle and invoke
input
code:main.ts
import {sendFromMain} from "@renderer";
const invokeFromRenderer = async () => {
// do something...
}
sendFromMain();
code:renderer.ts
import { invokeFromRenderer } from "@main";
invokeFromRenderer();
const sendFromMain = () =>{
}
output
code:main.ts
const invokeFromRenderer = async () => {
// do something...
}
ipcMain.handle("invokeFromRenderer",invokeFromRenderer)
const sendFromMain = () => {
ipcMain.send("sendFromMain");
}
code:preload.ts
electron.contextBridge.exposeInMainWorld('__electron_preload__', {
invokeFromRenderer: (...args) =>
ipcRenderer.invoke("invokeFromRenderer", ...args);
__handle__sendFromMain: (callback) =>
ipcRenderer.on("sendFromMain", (_, ...args) => callback(...args))
})
code:renderer.ts
const {invokeFromRenderer} = __electron_preload__;
const sendFromMain = () =>{
}
__handle__sendFromMain(sendFromMain);