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

React报错:Too many re-renders. React limits the number of renders to prevent an infinite loop 寻求解决帮助

解决React "Too many re-renders" 报错的核心问题

嘿,刚看了你的代码,一眼就揪出问题所在了——这是React新手很容易踩的坑,别慌!咱们一步步来梳理:

1. 无限循环的根源:按钮的onClick写法错误

先看你代码里的这个按钮:

<button className="btn" onClick={setCreating(true)}>
  Create Event
</button>

你直接把setCreating(true)写在了onClick属性里,这会导致组件每次渲染时都会立刻执行这个状态更新函数。状态一更新就触发组件重新渲染,重新渲染又会再次调用setCreating(true),如此往复形成无限循环,React为了保护程序只能抛出"Too many re-renders"的报错。

修复方法:

把onClick改成箭头函数包裹,确保只有点击按钮时才会触发状态更新:

<button className="btn" onClick={() => setCreating(true)}>
  Create Event
</button>

2. 顺带修正其他潜在问题

除了上述核心报错,你的代码还有两个小细节需要调整:

  • useRef用法错误:你尝试用对象解构获取多个ref,但useRef(null)返回的是单个带current属性的对象,正确的写法是为每个ref单独声明:
    const titleElRef = useRef(null);
    const priceElRef = useRef(null);
    const dateElRef = useRef(null);
    const descriptionElRef = useRef(null);
    
  • 未定义变量问题:你声明了const event = { title, price, date, description };,但代码里没有定义title、price这些变量,这会导致另一个报错,记得补充变量定义或者删除无用的event声明。

最后总结

其实这次的报错和你担心的Context API、生命周期钩子关系不大,就是个事件绑定的小失误。把按钮的onClick改完之后,无限循环的问题就能彻底解决啦!

内容的提问来源于stack exchange,提问作者Adarsh Goyal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:42:34