组件卸载后订阅没清理,内存泄漏怎么解决?
我在 React 组件里用 useEffect 订阅了一个全局事件,但切换页面后发现回调还在执行,明显是内存泄漏了。试过在 useEffect 返回函数里 unsubscribe,但好像没生效?
下面是我的代码结构:
useEffect(() => {
const handleUpdate = (data) => {
console.log('收到更新:', data);
setState(data);
};
eventBus.subscribe('user-update', handleUpdate);
// 忘记返回清理函数了?
}, []);
是不是必须显式返回一个清理函数?具体该怎么写才对?
UX爱琴
Lv1
必须返回清理函数才行,代码如下:
点赞
2026-03-21 14:01