当在直接在组件内使用setState时,会产生“渲染次数过多”的错误

例如:

const A = ( ) => {

  const [num,setNum] = useState(1);

  setNum(1);

  return (<>{num}</>);

};

虽然之前的num与之后的num内容一致,应不会产生渲染

但setNum() 之后的内部方法是 dispatchSetDate(),它会去判断当前在什么阶段

如果是渲染阶段(个人理解是A组件运行过程中)则不会检查num值是否相同,每次setNum()过后都会重新渲染(执行A组件),导致死循环

等A组件过程结束,则会检查num值是否相同。

一般这种情况,可以使用useEffect

reactHooks_useEffect的更多相关文章

随机推荐

  1. 尝试window10系统下使用appuim获取ios元素

    一般来说搞iOS手机的APP自动化需通过Mac电脑,但当前APP出图自动化测试平台是基于windows系统环境开发.如果因iOS APP需要再重新搭建Mac的开发及测试环境,会很大程度上浪费资源,增加 ...

  2. vue-cli2.0 项目前端不能用IP局域网访问,只能localhost访问

    解决办法1.config/index.js  修改 host:'localhost'为'0.0.0.0' 解决办法2.package.json 修改启动配置 -- host  0.0.0.0 优化终端 ...

  3. VM安装linux2022、设置root密码、设置国内更新源

    一.创建虚拟机 1.打开VM软件选择"创建新的虚拟机" 2.选择"典型"即可 3.选择"稍后安装操作系统" 4.选择客户机操作系统为&quo ...

  4. 使用虚拟环境-Python虚拟环境的安装和配置-virtualenv

    打开windows命令终端(cmd)安装虚拟环境 virtualenv(如果你执行了上面查看python版本的语句,那么要先使用exit()方法先退出) pip3 install virtualenv ...

  5. k8s centos 79,用kuboard-spray装成功。低版本的。安装docker-ce,安装epel源

    安装日志 #安装epel源 yum install epel-release -y --nogpgcheck # 安装docker-ce yum install -y yum-utils device ...

  6. 解决在高分屏电脑上的vmware,linux系统的显示比例不正确的问题

    除了在虚拟机系统内改变显示比例为200%的方法,还有另一种方法: 编辑虚拟机设置--硬件--显示器--指定监视器设置,选择任意监视器的最大分辨率为1920x1080(或者比例保持不变的其他分辨率,例如 ...

  7. 裁员潮下,我月薪3W依旧坚挺

    近几年来产品经理一直是求职市场中的香饽饽: 年薪20w起.没有专业限制.职业天花板高,甚至行业中一直流传着一句话:产品经理是CEO的学前班. 在各种光环的加持下,不少应届生或有转行打算的职场人都将目光 ...

  8. 34.MySQL 架构

    一主两从 双机热备 原理:

  9. C++实现线性表-顺序表的合并操作代码

    #include<iostream>#include<cstdlib>//C++动态分配存储空间using namespace std;#define OK 1#define ...

  10. python中使用to_excel时如何不覆盖原有数据来新建sheet页

    经常通过各种三方库操作Excel时,会遇到各种问题.这个库不支持这个方法,那个库支持但是又会丢失原来的数据....都是问题! . . . import openpyxl import pandas a ...