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

例如:

const A = ( ) => {

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

  setNum(1);

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

};

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

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

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

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

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

最新文章

  1. C++_系列自学课程_第_7_课_数组_《C++ Primer 第四版》
  2. 解决WCF的service端无法使用泛型的问题
  3. Linux 实现自动安装服务组件以及优化内核参数 (转)
  4. 使用SharePoint 2010的母版页
  5. mybaitis配置信息
  6. Bootstrap(2)整体架构
  7. Java基础(4)-数组
  8. HTML中表格
  9. shell 脚本下执行Mongodb命令
  10. 【原创】研发应该懂的binlog知识(下)
  11. docker-compose学习
  12. Mind Manager X 10 registry backup key under windows XP
  13. 详细讲解Linux下安装python3(Python3.5.4)
  14. helm的安装于与简单使用
  15. selenium实战脚本集(2)——简单的知乎爬虫
  16. 20145309李昊 WEB基础实践
  17. 配置 Mysql 支持远程访问 并取消域名解析以提高链接速度
  18. ROS教程
  19. [leetcode shell]192. Word Frequency
  20. epoll 系列函数简介、与select、poll 的区别

热门文章

  1. 解决python 操作 hbase报错:TTransportException(type=4,message=’TSocket read 0 bytes’)
  2. IDEA中引入smarttomcat后控制台输出乱码,运行跳转到浏览器
  3. 使用git下载文件时提示身份验证失败
  4. vue vant3上传图片文件以流的形式上传
  5. HybridCLR热更新方案
  6. BIP拓展js的使用
  7. (K8s学习笔记七)Pod的升级和回滚
  8. vue项目,npm run dev的时候出现:Error: error:0308010C:digital envelope routines::unsupported
  9. 更改材质uv
  10. 打卡node day06 ---登录和注册接口