Actualmente tengo un menú de Electron con un botón de guardar. Cuando se presiona este botón Guardar, deseo enviar un evento al proceso del renderizador, para que el renderizador maneje el evento.
Esto es lo que he intentado:
Fuente del menú
const menuTemplate = [ { label: "File", submenu: [ { label: "Save", accelerator: "Ctrl+S", click: () => { BrowserWindow.getFocusedWindow().webContents.send("save"); } }, ] }, ]Origen del renderizador
ipc.on("save", () => { console.log("save"); })Fuente de precarga
import { contextBridge, ipcRenderer } from "electron"; contextBridge.exposeInMainWorld("ipc", { on: ipcRenderer.on }); Al intentar esto, no obtengo ningún resultado al presionar el botón Guardar, incluidos los errores. Puedo confirmar que Electron está utilizando el menú correcto y que la función click() se está ejecutando. También puedo confirmar que ipc.on está definido en el renderizador.
¿Cómo puedo hacer que esto funcione? Gracias por adelantado.
Intente configurar this manualmente en la función de encendido.
contextBridge.exposeInMainWorld("ipc", { on: ipcRenderer.on.bind(ipcRenderer) });o crea una nueva función que pase los argumentos:
contextBridge.exposeInMainWorld("ipc", { on(event, fn) { ipcRenderer.on(event, fn) } });