执迷 执迷
首页
  • 技术分享

    • 小白都能看懂的闭包
    • GO-GMP模型
    • MySQL调优
    • centos7部署nacos
    • elasticserch
    • redis
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • JavaScript
  • ES6
  • CSS
  • 框架
  • Node
  • 服务
  • 其他
自我介绍
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

执迷

代码也是艺术
首页
  • 技术分享

    • 小白都能看懂的闭包
    • GO-GMP模型
    • MySQL调优
    • centos7部署nacos
    • elasticserch
    • redis
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • JavaScript
  • ES6
  • CSS
  • 框架
  • Node
  • 服务
  • 其他
自我介绍
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • JavaScript

  • ES6

  • CSS

  • 框架

  • Node

  • 服务

  • 其他

  • 设计模式

  • web3

  • react

    • 入门
      • useEffect
      • return
      • 陷阱
  • 学习笔记
  • react
执迷
2024-05-03
目录

入门

# 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
上次更新: 2024/07/21, 21:46:04
foundry框架

← foundry框架

最近更新
01
MySQL调优 原创
08-04
02
MySQL底层 原创
07-30
03
consul单台机器部署,注册外网服务健康检查 原创
07-30
更多文章>
Theme by Vdoing | Copyright © 2019-2024 执迷 | 闽ICP备2022018045号 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式