You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React教程实操出现Maximum update depth exceeded错误如何解决?

问题修复方案

错误原因

错误根源不在handleClick函数的逻辑,而在Square组件的事件绑定逻辑:你给按钮绑定onClick时写的是onClick={ props.onClick() },加了括号相当于组件渲染阶段直接执行该函数,函数执行后调用setState触发组件重渲染,重渲染又会再次执行该函数,陷入无限循环,最终触发Maximum update depth exceeded报错。

修复代码

只需要修改Square组件的onClick绑定,去掉括号传递函数引用即可:

function Square(props) {
    return (
        <button
            className="square"
            onClick={props.onClick}
        >
            {props.value}
        </button>
    );
}

同类问题规避方法

  • React事件绑定需要传递函数本身,而非函数执行的返回值:加括号的函数会在代码执行到当前行时立即运行,只有不加括号的函数名、箭头函数包裹的逻辑才会在事件真实触发时执行
  • 遇到无限更新报错时,第一时间排查渲染阶段有没有直接触发setState的逻辑,除了事件绑定直接加括号的场景,还要检查useEffect、类组件render函数里有没有无限制调用setState的代码
  • 可以借助React DevTools的组件更新监测功能,定位反复触发重渲染的组件,快速找到问题代码位置

内容的提问来源于stack exchange,提问作者Jacob Scida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:18:03