์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ํผํ
- db
- ajax
- object
- Project
- execCommand
- mysql
- Porject
- setTimeout()
- slow and steady
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- webpack
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- ๊ฒ์
- await
- Import
- ๋๊ธฐ
- https://m.blog.naver.com/tt2t2am1118/221010125300
- database
- prj
- JS #ํ๋ก์ ํธ
- sql
- promise
- async
- callback
- ๋น๋๊ธฐ
- eport
- json
- addEventListener
- js
- Today
- Total
C-log
[FE][!ERRO]Too many re-renders. React limits the number of renders to prevent an infinite loop. ๋ณธ๋ฌธ
[FE][!ERRO]Too many re-renders. React limits the number of renders to prevent an infinite loop.
4:Bee 2024. 3. 13. 22:51
json-server api๋ฅผ ๋ด๋นํ๊ณ ์๋ useEffect๋ฅผ ์ปค์คํ ํ ์ผ๋ก ๋ง๋ค์ด ๊ด๋ฆฌํ๊ธฐ ์ํด์ ๋ถ๋ฆฌํ๋ ๋์ค์ ๋ฐ์ํ ์๋ฌ์ด๋ค. Too many re-render ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ ๋ํ์ ์ผ๋ก uesEffect์ ์์กด์ฑ ๋ฐฐ์ด์ ์ฝ์ ํ์ง ์์์ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ค. ํ์ง๋ง ๋์ ๊ฒฝ์ฐ ์ปค์คํ ํ ์๋ useEffect์ ์์กด์ฑ ๋ฐฐ์ด์ด ๋ฌธ์ ์์ด ์ ์ฝ์ ๋์ด ์๋ค. ๊ทธ๋ ๋ค๋ฉด ํ์ฌ ์ปค์คํ ํ ์ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ปค์คํ ํ ์ ๋ถ๋ฌ์ค๋ ์ปดํฌ๋ํธ(LabExam)์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๋จํ๋ค. ์๋ ์ฝ๋๋ ๋์ ์ปค์คํ ํ ์ด๋ค.
* useLabExamAxios.js
## ์ปค์คํ ํ ์ด๋?
### ํ ์ธ๋?
### ์ปค์คํ ํ ์ด๋?
ํ์ฌ useLabExamAxios๋ฅผ ๋ถ๋ฌ์ค๋ ์ปดํฌ๋ํธ์์ useState๊ฐ useLabExamAxios์ ๋์ผํ๊ฒ ๋๋ฒ ์์ฒญ์ด ๋๊ณ ์๋ค. ์๋ ์ฝ๋๋ useLabExamAxios๋ฅผ ๋ถ๋ฌ์ค๋ ์ปดํฌ๋ํธ์ ์ฝ๋์ด๋ค.
์ด๋ ์ฆ, ์ธ๋ถ์๋ ๋ด๋ถ์๋ useState๊ฐ ์ฌ๋ฌ๋ฒ ๋ ๋๋ง์ด ๋๊ณ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ด๋ ๋ฌดํ ๋ ๋๋ง์ ๋ฐ์ ์ํฌ ์ ์๋ค. ๋ฐ๋ผ์ ์ธ๋ถ, ๋ด๋ถ์ useState๊ฐ ํ๋๋ง ์กด์ฌ ํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. ๋๋ ์ธ๋ถ์ ์๋ useState๋ฅผ ํ๋ฒ ๋ถ๋ฌ์ฌ ์ ์๊ฒ ์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ค. ๋ณ๊ฒฝ๋ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ๋๋ค๋ฉด ๊ณผ์ฐ ์ปค์คํ ํ ์ด ๋ง๋ ๊ฒ์ผ๊น? ๋ฐ๋ก ํจ์๋ก ๋ง๋ค์ด๋ด๋ ๋ชฉ์ ์ ๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ์ํจ์ธ๋ฐ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ๋๋ค๋ฉด ์ธ๋ถ์ ๋ด๋ถ์์ ์ด์ค์ ์ผ๋ก useEffect๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๊ธฐ์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ค. ๋ฐ๋ผ์ ์ปค์คํ ํ ์ ๋ง๋๋ ๋ฐฉ๋ฒ๋ณด๋ค๋ ์ธ๋ถ์ useEffect๋ฅผ ์ ์งํ ์ํ๋ก ๋ด๋ถ์ ์๋ Axios๋ง ๋ฐ๋ก ํจ์๋ก ๋ถ๋ฆฌํ๊ณ ์ธ๋ถ์ useEffect๋ฅผ ์ ์งํ๋ ํธ์ด ๊ฐ๋ ์ฑ์ ๋์ธ๋ค๊ณ ํ๋จ์ด ๋๋ค. ์ด์ ๋ฐ๋ผ ๋ ์ด์ ์ปค์คํ ํ ์ด ์๋๊ธฐ ๋๋ฌธ์ ํ์ผ ๋ช ๋ use๋ฅผ ์ ์ธํด์ ๋ค์ ์์ ํ๋ค. ์์ ๋ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
* labExamAxios.js
์ธ๋ถ ์ปดํฌ๋ํธ์ useEffect๋ฅผ ์ ์งํ๊ณ ๋ด๋ถ ์ปดํฌ๋ํธ์๋ axios๋ง ๋ถ๋ฆฌํ ๋ชจ์ต์ด๋ค. ์ธ๋ถ ์ปดํฌ๋ํธ๋ import๋ฅผ ํด์ค๊ณ ์๋์ ๊ฐ์ด ๊ตฌ์ฑํ๋ค.
# suffleArray ํจ์ / handleShuffle ํจ์ ๋ถ๋ฆฌ ์ค ๋ฐ์ํ Too many re-render ์๋ฌ
axios์ ์ด์ด suffleArray๋ฅผ ๋ถ๋ฆฌํ๋ ๋์ค์๋ ๋ฐ์์ด ๋์๋ค. ํ์ง๋ง ์๊ฐ๋ณด๋ค ๊ฐ๋จํ ์ด์ ์๋ค. ์ฐ์ ๋ถ๋ฆฌ๋ ํจ์๋ค์ ์๋์๊ฐ๋ค.
* shuffleArray.js
์ด์ ์ ์ฉ๋ ์ธ๋ถ ์ปดํฌ๋ํธ๋ ์๋์ ๊ฐ๋ค.
์ฌ๊ธฐ์์ ๋ฌธ์ ๊ฐ ๋ฐ์๋ ๊ฒ์ด๋ค. ์๋ onClick๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ํจ์์ ๊ดํธ'()'๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํจ์ ๋ช ๋ง ์์ฑํด์ผํ๋ค. ํ์ง๋ง handleShuffleํจ์๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๊ฒ ๋๋ฉด์ ๋ฌดํ์ผ๋ก ํด๋ฆญ๋๊ณ ์๋ ๊ฒ์ด์๋ค. ๋ฐ๋ผ์ ๋ค์ ํ๋ฒ ํ์ดํ๊ธฐ ํจ์๋ก ๊ฐ์ธ์ค์ผ ํ๋ค. ์์ ๋ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ ํด์ฃผ๋ฉด ๋ชจ๋ ๋ฌดํ ๋ ๋ ์๋ฌ๋ ์ฌ๋ผ์ง๊ฒ๋๊ณ ์์ ํ๊ฒ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ ์ ์๊ฒ ๋์๋ค.
'๐ป๊ฐ๋ฐ ๋ ธํธ > ๋๋ง์ ์ํ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[FE]๋๋ง์ ์ํ์ง์ ์๋ํฐ์ ํด๋ฐ๋ฅผ ์ง์ ์ ์ํ๋ค.(๊ธฐ๋ณธ ํด๋ฐ ์ ์) (0) | 2024.03.22 |
---|---|
react-quill lib์ด๋? react-quill์ ์ฌ์ฉํ์ง ๋ง์ (1) | 2024.03.15 |
์์ ๋ API๋ก ๊ธฐ์กด ํจ์ ์์ (0) | 2024.03.09 |
์์ ๋ API์ ์์ผ๋ก FE์ ๊ฐ๋ฐ ๋ฐฉํฅ์ฑ (0) | 2024.03.06 |
[FE]image_test (0) | 2024.03.04 |