原因:页面刷新进入了死循环,导致页面崩溃!  然后白屏了,,,

场景描述:

页面是一个 ip 区间,在区间后面显示  一组数据是否都存在区间内的,都存在显示 √,部分存在显示 ×,并显示不存在区间内的 ip

Console报错信息:Too many re-renders. React limits the number of renderers to prevent an infinite loop...


页面崩溃的代码:

const [ errorIps, setErrorIps]= useState<string[]>([]);//页面
<Row><ipInput> </Input>   //IP区间的控件{                    //状态显示seeError(items[index].value)?<span> √ </span>: <span> × <Popovertitle="错误 IP "content={<div>{ errorIps }</div>}><a>查看</a></Popover></span> }
</Row>//判断方法
const seeError=(value:string[]):string[]=>{let errors:string[]=[];props.List.map((item)=>{value.map((ele)=>{if(ele===item){errors.push();}setErrorIps(errors);});});
}

崩溃原因:每当页面渲染时,会触发seeError方法,方法中每次都会重置errors数组,errors数组状态每次更新会引起页面重新渲染,页面渲染又会触发seeError方法,,,,因此进入了无穷无尽的页面渲染,导致页面崩溃。。。


正确的代码:(不让页面渲染时更新状态)

const [errors, setErrors]= useState<string[]>([]);//页面
<Row><ipInput> </Input>   //IP区间的控件{                    //状态显示seeError(items[index].value).length===0?<span> √ </span>: <span> × <Popovertitle="错误 IP "content={<div>{ seeError(items[index].value).join(',')}</div>}><a>查看</a></Popover></span> }
</Row>//判断方法
const seeError=(value:string[]):string[]=>{let errors:string[]=[];props.List.map((item)=>{value.map((ele)=>{if(ele===item){errors.push();}//setErrors(errors);  //这个就不要了});});//取而代之,return这才是最重要的if( props.List.length === errors.length && errors=== 0){  //条件是业务的需要return [];  }else{return errors;}
}

注:也不是说所有的页面渲染不能 setState(),这个页面是触发了函数,函数里触发了setState,而这个state是个数组,只要触发一定会使页面重新渲染。

有些布尔型或者number、string,基本类型是可以在页面更改的,react本身会判断一下是否相等,不等才更新,才会渲染。

另外,白屏由各种各样的原因导致,比如,内存泄漏、代码死循环,页面崩溃等,那么遇到了白屏我们不要怕,我们一步步来解决,首先先排查哪一块导致了白屏,白屏时Console里有没有报错信息,Network里的接口调用的情况,Performance里的内存变化等,定位到了原因就好解决了。

Too many re-renders. React limits the number of renderers to prevent an infinite loop...相关推荐

  1. react报错Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.

    文章目录 一.报错语句是什么意思? 二.复现步骤,及其改法 1.错误代码 2.修改方式 3.报错原因 4.bind(this,data) 总结 一.报错语句是什么意思? Error: Too many ...

  2. React报错:Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.

    前言 在今晚用React的Hook写页面的时候,在写一个tab栏,然后要点击切换不同的tab,然后出现了一个报错: Error: Too many re-renders. React limits t ...

  3. 解决“Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.”

    解决"Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.& ...

  4. 关于React报Too many re-renders. React limits the number of renders to prevent an infinite错误的解决方案

    今天在开发RN程序的时候,报了一个Too many re-renders. React limits the number of renders to prevent an infinite.刚开始怀 ...

  5. react错误:Uncaught Error: Too many re-renders. React limits the number of renders to prevent an infini

    react错误: Uncaught Error: Too many re-renders. React limits the number of renders to prevent an infin ...

  6. Too many re-renders. React limits the number of renders to prevent an infinite loop

    在函数组件使用useState更新state数据时页面出现如下报错: 意思是:太多的被重新呈现.React限制呈现的数量,以防止无限循环. 原因是代码<a onClick={ setVisibl ...

  7. 关于Too many re-renders. React limits the number of renders to prevent an infinite loop.的解决方案

    在开发平常的react项目的时候,我们可能会对一个数据进行数据判断,然后在进行setstate更新其他的状态.比如 const mouse = useMouse()const [height, set ...

  8. React 报错 Too many re-renders. React limits the number of renders to prevent an infini

    写hooks遇到的,大概率是this的问题, 标签里写成箭头函数 <button onClick={() => setCounter(counter + 1)}>+1</but ...

  9. Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.

    因为打算实现切换效果时对button的click事件 this指代有问题 可以使用箭头函数 或者bind(this) 来解决 <button onClick={()=>toggle()}& ...

最新文章

  1. ng linux 存储 配置,linux学习之--安装一套OCS inventory-ng 环境
  2. 设计模式系列之七大原则之——迪米特法则
  3. 基于Nexys4 DDR的弹球游戏实现
  4. python打印菱形星号代码_Python打印“菱形”星号代码
  5. 计算机软件水平考试调整,全国计算机等级考试调整方案
  6. MacOS 的 zsh 和 bash 切换
  7. Docker集群管理之Swarm介绍
  8. 自学篇之----html的所有input标签 以及post和get提交之间的区别
  9. apicloud - addEventListener 接收不到 sendEvent 的解决方法
  10. 北京地铁挤,最挤昌平线
  11. 为什么边缘概率密度是联合概率密度的积分_看懂蒙特卡洛积分(一) 概率分布变换与随机采样...
  12. linux模糊查找子目录,Linux运维知识之linux中模糊查找文件
  13. android 广告栏效果,叫教你打造一个滑动悬浮置顶的视觉效果,给你的广告栏增加一些特色...
  14. 一元函数积分学2_不定积分的分部积分法
  15. 【Dvhop定位】基于加权双曲线定位的Dvhop算法附matlab代码
  16. java第四方聚合支付,2017年第四方和第三方聚合支付平台排名
  17. iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束
  18. java 完美洗牌,(2)数组相关算法题目
  19. Android:使用Intellij IDEA开发安卓apk程序HelloWorld
  20. JavaSE之基本语法及数组

热门文章

  1. 【例子】固定表格的首行与首列
  2. Android获取手机WiFi IP地址,MAC地址和网关地址程序实例
  3. 十大顶级骨传导蓝牙耳机,推荐五款顶流的骨传导耳机
  4. python 控制手机摄像头_用Python获取摄像头并实时控制人脸 !
  5. 感知器 - 西瓜好坏自动识别——python
  6. 计算机基础知识文件的复制移动,如何复制文件
  7. 淘宝API item_password - 获得淘口令真实url
  8. Android性能优化(一):APP启动优化
  9. 工业设计公司如何选择
  10. shell脚本——awk详细介绍(包含应用案例)