react useEffect 内存泄漏

javascript 复制代码
componentWillUnmount() {
    this.setState = (state, callback) => {
      return;
    };
    // 清除reaction
    this.reaction();
  }

useEffect

使用AbortController

javascript 复制代码
useEffect(() => {  
    let abortController = new AbortController();  
    // your async action is here  
    return () => {  
    abortController.abort();  
    }  
    }, []);


useRef

javascript 复制代码
    const isMounted = useRef(true);
    
    useEffect(()=>{
    if (isMounted.current) {
      init(); //执行方法
    }
    return () => {isMounted.current = false;};
     }, []);

setTimeout

javascript 复制代码
 useEffect(() => {
    const interval = setTimeout(() => {
    
    }, 10);
    return () => {
      clearTimeout(interval);
    };
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []);

建议了解相关知识:定时器,事件循环。

设置定时器1000ms后,定时器里的函数会被加入到宏任务队列里,并执行。此时,设置的只执行一次的定时器已经生效过了,清除定时器没有意义。

timer的值为定时器的序号,只有手动赋值为null,才会变为null。

清除定时器要在定时器触发前调用才有意义

DOM 官网

解决内存泄漏

相关推荐
郝学胜-神的一滴18 小时前
深入解析C/S架构与B/S架构:技术选型与应用实践
c语言·开发语言·前端·javascript·程序人生·架构
这是个栗子19 小时前
前端开发中的常用工具函数(二)(持续更新中...)
开发语言·前端·javascript
苦藤新鸡19 小时前
38.交换二叉树中所有的左右节点
开发语言·前端·javascript
2501_9445215919 小时前
Flutter for OpenHarmony 微动漫App实战:主题配置实现
android·开发语言·前端·javascript·flutter·ecmascript
lina_mua20 小时前
Cursor模型选择完全指南:为前端开发找到最佳AI助手
java·前端·人工智能·编辑器·visual studio
董世昌4120 小时前
null和undefined的区别是什么?
java·前端·javascript
软弹20 小时前
Vue2 的数据响应式原理&&给实例新增响应式属性
前端·javascript·vue.js
浅水壁虎20 小时前
任务调度——XXLJOB3(执行器)
java·服务器·前端·spring boot
晨欣20 小时前
pnpm vs npm 命令对照表
前端·npm·node.js
Easonmax20 小时前
零基础入门 React Native 鸿蒙跨平台开发:3——固定表头表格实现
react native·react.js·harmonyos