无法从Electron中的ipcRenderer中删除侦听器

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

我现在有类似下面的代码:

// preload.js
const { contextBridge, ipcRenderer } = require('electron');

contextBridge.exposeInMainWorld('API', {
  exampleListener: (listener) => ipcRenderer.on('example', (_, message) => listener(message)),
  removeExampleListener: (listener) => ipcRenderer.removeListener('example', (_, message) => listener(message)),
});

个字符
添加侦听器效果很好,但由于某种原因不能删除侦听器。
不幸的是,在我的情况下使用removeAllListeners是不可行的。
是我做的不可能,还是我错过了什么?

vfhzx4xs

vfhzx4xs1#

你必须传递 * 相同 * 的函数,而不是做同样事情的函数。举例来说:

const someListener = (l) => ipcRenderer.on('example', (_, message) => l(message))
contextBridge.exposeInMainWorld('API', {
  exampleListener: someListener,
  removeExampleListener: (_) => ipcRenderer.removeListener('example', l),
});

字符串

相关问题