From 64b918ab3ca53b011e217fe63d589f6dcc367aa9 Mon Sep 17 00:00:00 2001 From: Ein <45907846+Ein212@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:57:33 +0800 Subject: [PATCH] Update index.ts [fix]bug : ipcRenderer.off is not work --- electron/preload/index.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/electron/preload/index.ts b/electron/preload/index.ts index 3ddef8b5..4557646a 100644 --- a/electron/preload/index.ts +++ b/electron/preload/index.ts @@ -2,14 +2,13 @@ import { ipcRenderer, contextBridge } from 'electron' // --------- Expose some API to the Renderer process --------- contextBridge.exposeInMainWorld('ipcRenderer', { - on(...args: Parameters) { - const [channel, listener] = args - return ipcRenderer.on(channel, (event, ...args) => listener(event, ...args)) - }, - off(...args: Parameters) { - const [channel, ...omit] = args - return ipcRenderer.off(channel, ...omit) - }, + on(...args: Parameters) { + const [channel, listener] = args; + const listenerWrapper = (event: Electron.IpcRendererEvent, ...args: any[]) => + listener(event, ...args); + ipcRenderer.on(channel, listenerWrapper); + return () => ipcRenderer.off(channel, listenerWrapper); + }, send(...args: Parameters) { const [channel, ...omit] = args return ipcRenderer.send(channel, ...omit) @@ -115,4 +114,4 @@ window.onmessage = (ev) => { ev.data.payload === 'removeLoading' && removeLoading() } -setTimeout(removeLoading, 4999) \ No newline at end of file +setTimeout(removeLoading, 4999)