React中遇到的渲染死循环问题

本文介绍了一个React初学者在使用onClick事件处理函数时遇到的死循环渲染问题。问题源于handleShow函数在render阶段被直接调用,导致props变化,从而陷入无限循环的render过程。通过将handleShow包裹在匿名箭头函数中,可以有效避免这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚开始学react没多久,现在边干活边学习,今天遇到了一个bug,百度了一下解决了,总结一下

 

当我写下面这段代码的时候,遇到了这个bug,f12之后发现,无限报警告

代码:<a href = "#" onClick={this.handleShow(true)}>显示</a>

警告: .Warning: setState(...): Cannot update during an existing state transition (such as within render or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to componentWillMount

通过百度后得知,原来react调用render方法渲染超链接的时候,props发生了改变,即this.handleShow直接执行了,因为render会通过props或者states改变来重新渲染,即DOM diff,所以结果变成了render——>组件——>props/states改变——>render的死循环中。

解决方法:通过匿名箭头函数即可解决,这样在render渲染的时候,props或者states也不会发生改变。

代码:<a href = "#" onClick={()=>this.handleShow(true)}></a>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值