react函数式组件的useEffect

news/2024/10/29 9:32:38/

useEffect

1.useEffect的介绍

  • 引用官网的一句话就是:useEffect 就是一个 Effect Hook,给函数组件增加了操作副作用的能力。(你之前可能已经在 React 组件中执行过数据获取、订阅或者手动修改过 DOM。我们统一把这些操作称为“副作用”,或者简称为“作用”。)
  • 以在组件内多次调用
  • React 会在每次渲染后调用副作用函数 —— 包括第一次渲染的时候。
  • 副作用函数还可以通过返回一个函数来指定如何“清除”副作用。
  • React 会在组件卸载的时候执行清除操作。
  • 它的第二个参数为数组:仅在数组(定义的第二个参数)里面各项有一项发生变化的情况才会触发当前的 userEffect ,否则不触发。

2.基本使用

2-1.基本使用

useEffect不传递第二个参数会导致每次渲染都会运行useEffect。然后,当它运行时,它获取数据并更新状态。然后,一旦状态更新,组件将重新呈现,这将再次触发useEffect,这就是问题所在。

useEffect(()=>{undefinedconsole.log(props.number)setNumber(props.number)
}) //所有更新都执行

2-2 传递空数组

当第二个参数为空数组时,仅在挂载与卸载时触发

useEffect(()=>{undefinedconsole.log(props)
},[]) //仅在挂载和卸载的时候执行

2-3 传递一个值

当参数为一个值,类比于Vue中的监听器,当该值发生变化时,才会调用useEffect函数

useEffect(()=>{undefinedconsole.log(count)
},[count]) //count更新时执行

2-4 传递多个值

useState返回的setter 不会在每次渲染时重新创建,因此只会运行一次

const Asynchronous : React.FC=({number})=>{undefined
const [number2,setNumber2] = useState(number);
useEffect(()=>{undefinedconsole.log(number)setNumber2(number)
},[number,setNumber2]) //监听props对象number的更改
//setNumber2是useState返回的setter,所以不会在每次渲染时重新创建它,因此effect只会运行一次
}

2-5 传递props的对象 传递的useState返回的setter

2-6 return

return中的函数 会在组件销毁时被调用 相当于componentWillUnMount

类似Vue中的onDestroy

const timer = setInterval(() => {undefined
setCount(count + 1)
}, 1000)
// useEffect方法的第一个参数是一个函数,函数可以return一个方法,这个方法就是在组件销毁的时候会被调用
useEffect(() => {undefinedreturn () => {undefinedclearInterval(timer)}
}, [])

http://www.ppmy.cn/news/1142025.html

相关文章

计算机竞赛 深度学习火车票识别系统

文章目录 0 前言1 课题意义课题难点: 2 实现方法2.1 图像预处理2.2 字符分割2.3 字符识别部分实现代码 3 实现效果4 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 图像识别 火车票识别系统 该项目较为新颖,适…

基于YOLOv8模型的120类狗狗目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型的120类狗狗目标检测系统可用于日常生活中检测与定位车辆目标,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数…

我做了一个简易P图(参数图)分析软件

P图(即参数图,Parameter Diagram),是一个结构化的工具,帮助大家对产品更好地进行分析。 典型P图格式 P图最好是和FMEA软件联动起来,如国可工软的FMEA软件有P图分析这个功能。 单纯的P图分析软件很少,为了方便做P图分…

HTML开篇之安装VSvode(用记事本编辑HTML)

文章目录 前端开篇开篇知识点讲解1.HTML 结构1.1认识 HTML 标签1.2HTML 文件基本结构1.3标签层次结构1.4快速生成代码框架1.5用记事本写HTML1.6前端开发工具1.7下载vscode 及使用教学 大家好,我是晓星航。今天为大家带来的是 HTML 相关的讲解!&#x1f6…

机器学习-数值特征

离散值处理 import pandas as pd import numpy as npvg_df pd.read_csv(datasets/vgsales.csv, encoding "ISO-8859-1") vg_df[[Name, Platform, Year, Genre, Publisher]].iloc[1:7]NamePlatformYearGenrePublisher1Super Mario Bros.NES1985.0PlatformNintendo2…

mysql MVCC(多版本并发控制)理解

最近看MVCC相关资料,这边做一个记录总结,方便后续理解。 目录 一、MVCC相关概念 二、MVCC实现原理 1.隐藏字段 2.undo log 3.Read View 4.MVCC的整体处理流程 5. RC,RR级级别下的innoDB快照读有什么不同 6.总结 一、MVCC相关概念 1…

课题学习(五)----阅读论文《抗差自适应滤波的导向钻具动态姿态测量方法》

一、简介 抗差自适应滤波:利用等价权函数和自适应因子合理的分配信息,有效地滤除钻具振动对动态姿态测量的影响。、   针对导向钻井工具动态测量受钻具振动的影响而导致测量不准确的问题,提出一种抗差自适应滤波的动态空间姿态测量方法。通…

水星 Mercury MIPC251C-4 网络摄像头 ONVIF 与 PTZ 云台控制

概况 最近在 什么值得买 上发现一款水星的网络摄像头, 除了支持云台/夜视功能之外, 还标明支持 onvif 协议. 所以想着买来接入到 HomeAssistat 作为监控使用.可到手之后发现事情并没有那么简单, 记录如下. 接入 HomeAssistant 按照 HA 的文档 ONVIF Camera 接入无非就是配置文件…