Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why react throws "Too many re-renders.", if we try to change state on a On Click function itself

I am learning react hooks for last few days, but i cannot figure it out why I am getting this error.

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

use state variables

 const [count, setSamplePageData] = useState(0);

changing state in onclick

<button className="btn-primary" onClick={setSamplePageData(1)}>
like image 344
Arunkumar09 Avatar asked Dec 06 '25 10:12

Arunkumar09


2 Answers

You're calling setSamplePageData and passing it the argument 1 during the render step. (Which triggers a new render, which calls the function again, ad infinitum).

Then you're passing the return value of that (which is, IIRC, undefined) to onClick.

You need to pass a function to onClick.

 const [count, setSamplePageData] = useState(0);
 const clickHandler = () => setSamplePageData(1);
 // ...
 <button className="btn-primary" onClick={clickHandler}>
 
like image 187
Quentin Avatar answered Dec 09 '25 00:12

Quentin


It's because setSamplePageData is instantly called upon render and when you set state you trigger render event thus creating infinite loop.

Instead define a inline function in onClick event

<button className="btn-primary" onClick={() => setSamplePageData(1)}>
like image 36
Emil Avatar answered Dec 08 '25 23:12

Emil