【发布时间】:2021-06-22 11:05:02
【问题描述】:
希望您今天过得愉快✌感谢您提前提供帮助。
我正在使用 ElectronJS 和 React 构建一个 Web 浏览器。我正在使用 ipcMain 和 ipcRenderer 在后端和前端之间发送事件,它们只是 EventEmitter 类的子类。
我正在处理的问题是 EventEmitter 泄漏。我的 React 前端发送一个事件,后端返回数据。 React 然后将此数据分配给它的状态,这会导致重新渲染,然后创建另一个事件侦听器。这会创建一堆事件侦听器,然后出现内存泄漏错误。
这是我的 React 组件的示例
export const CoreLayout = props => {
const [tablist, setTablist] = useState([]);
window.ipcRenderer.on('receive-tabs', (_, data) => {
setTablist(data);
});
console.log('rerender2')
return (
<div className="flex flex-col w-full min-h-screen bg-night-600">
<Header tablist={tablist} isMaximized={props.isMaximized} />
</div>
)
}
【问题讨论】:
-
你应该使用
useEffect来管理这样的订阅
标签: node.js reactjs electron eventemitter