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

解决内存泄漏

相关推荐
龚思凯2 分钟前
TypeScript 中 typeof 的全面解析:从基础用法到高级技巧
前端·typescript
架构个驾驾3 分钟前
React 18 核心特性详解:Props、State 与 Context 的深度实践
react.js·前端框架
itslife3 分钟前
实现 render 函数 - 初始化更新队列
前端·react.js·前端框架
baozj4 分钟前
一次表单数据复用引发的 Bug:理解 Vue 中的 data 为何是函数
前端·javascript·vue.js
LRH6 分钟前
JS基础 - instanceof 理解及手写
前端·javascript
leefirm6 分钟前
node 切换版本,每次打开都是切换前的版本怎么办?Node.js 版本管理神器 NVM 完全使用指南
前端
kangyouwei8 分钟前
鸿蒙开发:18-hilogtool命令的使用
前端·harmonyos
小小神仙9 分钟前
JSCommon系列 - 为什么前端没有 Apache Commons?
前端·javascript·设计模式
WildBlue10 分钟前
🚀 React组件化实战:用TodoList项目搭乐高式开发!🎉
前端·react.js
Nano10 分钟前
ES6中的Proxy和Reflect:深入解析与Vue3响应式原理的完美结合
前端·vue.js