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 官网

解决内存泄漏

相关推荐
北城以北88883 分钟前
ES6(二)
前端·javascript·es6
朕的剑还未配妥17 分钟前
移动端触摸事件与鼠标事件的触发机制详解
前端
墨鱼鱼22 分钟前
【征文计划】Rokid JSAR 实践指南:打造沉浸式 "声动空间盒" 交互体验
前端
携欢25 分钟前
Portswigger靶场之Exploiting a mass assignment vulnerability通关秘籍
前端·安全
什么芋泥香蕉33033 分钟前
比 Manus 还好用?这款国产 AI,让 Python 小白也能玩转编程
前端·后端
为java加瓦34 分钟前
前端学AI:如何写好提示词(prompt)
前端·人工智能·prompt
qq_18417767741 分钟前
前端自动部署项目到服务器
服务器·前端·javascript
非凡ghost43 分钟前
猫眼浏览器(Chrome内核增强版浏览器)官方便携版
前端·网络·chrome·windows·软件需求
C2X1 小时前
Vue3.0 学习总结
前端
汤姆Tom1 小时前
CSS 新特性与未来趋势
前端·css·面试