夏天夏 夏天夏
首页
  • 技术分享

    • 小白都能看懂的闭包
    • 关于后台管理应用
    • 关于技术的取舍
    • 前端工程化
    • 切换node版本
    • 如何优雅的写事件代理
    • 我所不了解的技术
    • 我喜欢的parcel
    • angular1使用
    • npm script打造前端工作流
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • 年终总结

    • 2019年总结
    • 2020年总结
    • 2021年总结
  • JavaScript
  • CSS
  • 框架
  • Node
  • 服务
  • web3
  • 其他
我的作品
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

夏天夏

我也不饶岁月
首页
  • 技术分享

    • 小白都能看懂的闭包
    • 关于后台管理应用
    • 关于技术的取舍
    • 前端工程化
    • 切换node版本
    • 如何优雅的写事件代理
    • 我所不了解的技术
    • 我喜欢的parcel
    • angular1使用
    • npm script打造前端工作流
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • 年终总结

    • 2019年总结
    • 2020年总结
    • 2021年总结
  • JavaScript
  • CSS
  • 框架
  • Node
  • 服务
  • web3
  • 其他
我的作品
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • JavaScript

  • CSS

  • 框架

  • Node

  • 服务

  • 其他

  • 设计模式

  • web3

  • react

    • 入门
      • useEffect
      • return
      • 陷阱
  • 学习笔记
  • react
夏天夏
2024-12-19
目录

入门

# useEffect

# return

useEffect 中的 return 语句中的函数会在组件卸载(销毁)时执行,用于清理副作用或取消订阅。这是 useEffect 的一个重要特性,用于确保在组件不再使用时清理资源,以防止内存泄漏和其他问题。

import React, { useEffect } from 'react';

function MyComponent() {
  useEffect(() => {
    // 创建一个定时器
    const timerId = setInterval(() => {
      console.log('Timer running...');
    }, 1000);

    // 在组件卸载时清理定时器
    return () => {
      clearInterval(timerId);
    };
  }, []); // 空数组表示只在组件挂载和卸载时执行

  return (
    <div>
      {/* 组件内容 */}
    </div>
  );
}

export default MyComponent;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 陷阱

1、陷阱一:以下代码会陷入死循环中

const [count, setCount] = useState(0);
useEffect(() => {
  setCount(count + 1);
});
1
2
3
4

2、陷阱二:没有依赖数组作为第二个参数,与依赖数组位空数组 [] 的行为是不一致的:

useEffect(() => {
  // 这里的代码会在每次渲染后执行
});

useEffect(() => {
  // 这里的代码只会在组件挂载后执行
}, []);

useEffect(() => {
  //这里的代码只会在每次渲染后,并且 a 或 b 的值与上次渲染不一致时执行
}, [a, b]);
1
2
3
4
5
6
7
8
9
10
11
编辑 (opens new window)
上次更新: 2024/12/19, 22:35:02
foundry框架

← foundry框架

最近更新
01
远程办公的个人思考
02-21
02
SEO
01-02
03
NFT的价值
12-27
更多文章>
Theme by Vdoing | Copyright © 2019-2025 夏天夏 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式