先简单说一下常见的useEffect使用方式 三种

useEffect(() => {// 副作用函数的内容
})  每次更新之后都要执行
--------------------
useEffect(() => {// 副作用函数的内容
}, [])
初始化页面时 只执行第一次
--------------------
useEffect(() => {// 副作用函数的内容
}, [依赖项]) //依赖项可以有多个
1 初始执行一次 2 每次依赖项的值变化时执行

这是我们常用的方法

重点来了:

1. useEffect 只能是一个同步函数,不能使用 async

如果需要发送请求或者其他异步操作,需要额外加一个箭头函数包裹住

useEffect(()={
async () => {const res = awiat xxx()}
}, [])

2. 副作用函数的返回值

useEffect 函数是可以return的格式是下图,他可以返回一个函数,这个函数称为清理函数

useEffect(() => {// 副作用函数的内容return 副作用函数的返回值
}, [])

清理函数的执行时机: 清理函数会在组件卸载时以及下一次副作用函数调用之前执行

结合依赖项:上图中的清理函数只会在组件被卸载时调用,因为他的依赖项是空,只会在页面初始化的时候执行副作用函数不会执行清理函数,当组件卸载时执行清理函数

所以我们可以通过这一特性来模拟  componentWillUnmount 这个钩子函数,组件被销毁时执行

useEffect(()=>{return ()=>{// 做清理工作}
}, [])

react中副作用函数(useEffect)详解相关推荐

  1. 25、react 中使用路由 router 详解

    react 中使用路由 router 详解 今天开始最新的一个模块,也是 react 开发中最重要的一部分,就是路由. SPA 理解 我们使用原生的 HTML + CSS + JavaScript 开 ...

  2. C++中substr()函数用法详解

    C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...

  3. c++ memset 语言_C++中memset函数用法详解

    本文实例讲述了C++中memset函数用法.分享给大家供大家参考,具体如下: 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常 ...

  4. php dump函数详解,php中var_dump()函数的详解说明

    本文章给大家全面的介绍一下关于php中var_dump()函数用法详解,大家可参考参考. var_dump()void var_dump ( mixed expression [, mixed exp ...

  5. C语言结构体中定义函数指针详解

    C语言结构体中定义函数指针详解 结构体指针函数应用场景之一--驱动程序编写 结构体的一些基本用法 形式1:先定义结构体类型,再定义变量 形式2:在定义类型的同时定义变量 形式3:直接定义变量,用无名结 ...

  6. C++中发声函数Beep详解

    一.目的 1.想知道Beep是什么 二.参考 1.C++中发声函数Beep详解 https://blog.csdn.net/v1t1p9hvbd/article/details/71523218 ①总 ...

  7. python中setattr()函数用法详解

    setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的. getattr()用法详见博文:python中getattr()函数用法详解_IT之一小佬的博客-CSDN ...

  8. python中index函数_详解python中的index函数用法

    1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 de ...

  9. python中squeeze函数_详解pytorch中squeeze()和unsqueeze()函数介绍

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...

最新文章

  1. BZOJ 2154 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演,经典好题)(Luogu P1829)
  2. 2019年中国科创板全面解读报告
  3. Java中的DeskTop类
  4. 数据结构与算法 / 排序算法(1)
  5. OXite解读(1)----- 概述
  6. PHP session有效期session.gc_maxlifetime
  7. RPC 服务 与 HTTP 服务的区别
  8. linux内核:__user,__kernel,__safe,__force,__iomem
  9. linux虚拟用户登录失败,用shell用户或虚拟用户登录pureftpd
  10. element ui中动态合并单元格_element ui单元格的动态合并
  11. MATLAB安装教程
  12. 计算机样式的ppt,计算机应基础使用样式修饰页面.ppt
  13. Centos7下载linux内核源码
  14. win10系统字体 chrome 修改苹果字体
  15. python除法取商_python 除法
  16. 光照度和光强度的区别
  17. 基于JAVA高校教材征订管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  18. SpringBoot 开发案例之各种参数传递,以及前端代码和postman测试(完整版)
  19. 求助威纶通触摸屏与三菱PLC程序
  20. python实现酷狗音乐下载,以及利用tk界面可视化

热门文章

  1. 【资源总结】前端资源收集
  2. HM-SpringCloud微服务系列11.1【多级缓存的意义JVM进程缓存】
  3. 英语口语(英语流利说)笔记
  4. 韩信点兵(hanxin)--算法竞赛经典习题2-2:相传韩信才智过人,从不清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,他每次只要掠一眼队伍的排尾就知道总数(C++实现)
  5. listen函数详解
  6. net包 listen - golang
  7. 如何建立Qt Creator交叉编译嵌入式Linux
  8. matlab绘图时将NaN或Inf设为透明色或特定颜色
  9. 【老码农的技术理想】
  10. 王者荣耀测试自己本命英雄软件,王者荣耀在哪测本命英雄