๊ฐœ๋ฐœ ์ง€์‹, ์Šคํฌ๋ฆฝํŠธ/JavaScript, TS

Too many re-renders. React limits the number of renders to prevent an infinite loop. ์—๋Ÿฌ

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 4. 21. 17:46

Too many re-renders.์—๋Ÿฌ

 

๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๋‹ค๊ฐ€ ๋งŒ๋‚œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋‹ค๊ฐ€ ์˜ค๋žœ๋งŒ์— ๋ฐœ๊ฒฌํ•œ ์—๋Ÿฌ์˜€๋‹ค !!

 

 

์ด ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด onClick = {forUpdateModal(user)} ๋กœ ์ž‘์„ฑ์„ ํ–ˆ๋‹ค. ๋‚˜๋Š” user์ด๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋‹ด๊ณ  ์‹คํ–‰์‹œํ‚ค๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ €๋ ‡๊ฒŒ ํ•˜๋ฉด ๋˜๊ฒ ์ง€ ~ ๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ

 

 

์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฉด์„œ rendering์ด ๋ฌดํ•œ ๋ฐ˜๋ณต์ด ๋˜๊ณ  ์žˆ๋‹ค๋ผ๋ฉฐ ์—๋Ÿฌ ์„ค๋ช…๊ธ€์ด ์žˆ์—ˆ๋‹ค.

 

์ฒ˜์Œ์— ์ด๊ฑธ ๋ณด๋Š” ์ˆœ๊ฐ„ ์•„์ฐจ ์‹ถ์—ˆ๋‹ค..!! ๊ณผ๊ฑฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฐ์šธ ๋‹น์‹œ onClick ={์ฝœ๋ฐฑํ•จ์ˆ˜}๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๊ฐ•์‚ฌ๋‹˜์˜ ๋ง์ด ๊ธฐ์–ต๋‚ฌ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋ฐ”๋กœ ๊ทธ๋ ‡๊ฒŒ ๋ฐ”๊ฟจ๋”๋‹ˆ

 

์˜ค๋ฅ˜ ์—†์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™์ด ๋˜์—ˆ๋‹ค.

 

์›์ธ์„ ํŒŒ์•…ํ•ด ๋ณด๋ฉด

 

์ผ์ผ๋ฐ˜ ํ•จ์ˆ˜๋ฅผ ๋„ฃ์„ ๊ฒฝ์šฐ ๋žœ๋”๋ง ๋˜๋Š” ๊ณผ์ •์—์„œ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ๋ฐ”๋กœ ํ˜ธ์ถœ์ด ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค. ๋‚˜๋Š” onClick ์ฆ‰, ํด๋ฆญ ํ–ˆ์„ ๋•Œ ์ž‘๋™ํ•ด์•ผ ํ•  ํ•จ์ˆ˜๊ฐ€ ๊ณง๋ฐ”๋กœ ๋‚˜์˜ ์˜์ง€ ์ƒ๊ด€์—†์ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด์„œ ๊ฐ’์ด ๋งŒ์•ฝ์— ๋‹ฌ๋ผ์ง€๊ฒŒ ๋˜๋ฉด ๋ฌดํ•œ๋žœ๋”๋ง์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊นŒ์ง€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

 

์ด๋ ‡๊ฒŒ onClick์˜ ๊ธฐ๋Šฅ์„ ์ œ๋Œ€๋กœ ํ•˜์ง€ ๋ชปํ•  ๋ฟ ๋”๋Ÿฌ ๋ฌดํ•œ ๋žœ๋”๋ง์ด๋ผ๋Š” ์ž ์žฌ์ ์ธ ์˜ค๋ฅ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

 

React์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ตฌ๋ฌธ ์ž์ฒด๋ฅผ ๋ง‰์•„ ๋†“์•˜๋‹ค.

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž onClick={์ฝœ๋ฐฑํ•จ์ˆ˜} ๋ฅผ ์ ์šฉํ•จ์œผ๋กœ์จ, ๋‚ด๊ฐ€ ํด๋ฆญ์‹œ์— ์ž‘๋™ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ๊ฒƒ์ด๋‹ค.