首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >useEffect cleanup函数

useEffect cleanup函数
EN

Stack Overflow用户
提问于 2021-11-12 15:27:41
回答 1查看 38关注 0票数 0

我使用使用效果来实现取消。因此,存在延迟,这是在去抖动中执行的。据我所知,使用效果会使信息泄漏,并成为一个空函数。如何使其在没有“成本”状态的情况下,函数将无法工作,并且不会出现警告

错误:警告:无法更新已卸载组件的反应状态。这不是一个操作,但它表明您的应用程序中存在内存泄漏。要解决此问题,请取消使用效果清理功能中的所有订阅和异步任务。

代码:

代码语言:javascript
复制
    function useDebounce(value,fn, delay) {
      useEffect(() => {
          const handler = setTimeout(() => { fn() }, delay);
          return () => {  clearTimeout(handler) };
        },[value]);
    }
EN

回答 1

Stack Overflow用户

发布于 2021-11-12 15:31:13

您可以创建已装载的检查。

代码语言:javascript
复制
function useDebounce(value,fn, delay) {
  useEffect(() => {
    let mounted = true;
    const handler = setTimeout(() => {
       if (mounted) fn();
    }, delay);
    return () => {
      mounted = false;
      clearTimeout(handler);
    };
  },[value]);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69945268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档