๐Ÿšจ[costagram] Warning: Cannot update a component (`Batcher`) while rendering a different component ์˜ค๋ฅ˜(๊ฒฝ๊ณ )

์ง•์ง•์ง•ยท2023๋…„ 2์›” 18์ผ

Project

๋ชฉ๋ก ๋ณด๊ธฐ
5/8
post-thumbnail

๐Ÿšจ ๋ฌธ์ œ์ƒํ™ฉ

Navbar ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋˜๋Š” ๋™์•ˆ Batcher ๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์—†๋‹ค๋ผ๋Š”(?) ๊ฒฝ๊ณ  ๋ฐœ์ƒ!
To locate the bad setState() call inside Navbar๋ผ๊ณ  ๋˜์–ด์žˆ๋Š” ๊ฑธ ๋ณด๋‹ˆ ์–ด๋– ํ•œ ์ด์œ ๋กœ navbar์—์„œ setState ํ•จ์ˆ˜๋ฅผ ๋ถ€๋ฅผ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒฝ๊ณ ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

โ“ ๋ฌธ์ œ ์ƒํ™ฉ ๋ถ„์„

  • ๋จผ์ € Navbar ์˜ ์–ด๋–ค ๋ถ€๋ถ„์—์„œ ๊ฒฝ๊ณ ๊ฐ€ ๋œจ๋Š” ๊ฑด์ง€ ์ฐพ์•„๋ณด์•˜๋‹ค. (setState ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์„ ์ฐพ์•„๋ณด์•˜๋‹ค.)

  • Navbar ์— ๊ฒ€์ƒ‰์ฐฝ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” input ์ด ์žˆ๋Š”๋ฐ, ์ด input์— ์ž‘์„ฑ๋˜๋Š” ๋‚ด์šฉ์„ useState๋ฅผ ์ด์šฉํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ์ด state ๊ฐ’์ด ๋นˆ ๊ฐ’์ผ ๊ฒฝ์šฐ recoil์„ ์ด์šฉํ•ด ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š” sortedData(๊ฒ€์ƒ‰๋œ ์œ ์ €๊ฐ€ ์ž‘์„ฑํ•œ ๊ธ€(data)๋งŒ ๋‹ด๊ธด ๋ฐฐ์—ด) ์˜ ๊ฐ’์„ useSetRecoilState ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋นˆ ๋ฐฐ์—ด([])๋กœ ์„ค์ •ํ•ด์ฃผ๋Š” ๋กœ์ง์„ ์งœ๋’€์—ˆ๋‹ค.

  • useSetRecoilState์ธ setSortedData ๊ฐ€ ๊ฒฝ๊ณ ์—์„œ ๋งํ•ด์ฃผ๋Š” setState์˜€๊ณ , ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ์ด๋ฅผ useEffect๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ–ˆ๋‹ค.
    ๐Ÿ› ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋˜๋Š” ๋™์•ˆ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์ปดํฌ๋„ŒํŠธ ๋ Œ๋”๋ง ์ง„ํ–‰ ์ค‘ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค.

โœจ ๋ฌธ์ œ ํ•ด๊ฒฐ

- useEffect๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋ผ๋Š” ๊ธ€์„ ๋ณธ ํ›„ ์œ„์˜ ์กฐ๊ฑด๋ฌธ์„ useEffect ์•ˆ์—์„œ ์ฒ˜๋ฆฌ๋˜๋„๋ก ๋„ฃ์–ด์ค€ ๋’ค, dependency array๋กœ ๋ฐœ์ƒ์กฐ๊ฑด์„ searchName์„ ๋„ฃ์–ด์คŒ์œผ๋กœ์จ searchName์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์กฐ๊ฑด ์‹คํ–‰์ด ๋˜๋„๋ก ํ•ด์ฃผ๋‹ˆ ๊ฒฝ๊ณ ๋ฉ”์„ธ์ง€๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค :)
profile
๊พธ์ค€ํžˆ ๋‚˜๋ฅผ ๋ฐœ์ „์‹œํ‚ค์ž ๐Ÿซถ

0๊ฐœ์˜ ๋Œ“๊ธ€