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
相关产品推荐
相关产品推荐

