[React Error] Rendered fewer hooks than expected ๐Ÿ™„ react hooks ๊ทœ์น™

๋งˆ๋ฐ์Šพ : My Dev Spaceยท2020๋…„ 6์›” 1์ผ
1
post-thumbnail

์ž‘์—…์ค‘์— ๊ฐ‘์ž๊ธฐ ์•„๋ž˜์™€๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.. ๋ฐฉ๊ธˆ์ „ ์ž‘์—…ํ•œ๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด ์ง€์›Œ๋ดค์ง€๋งŒ ์—ฌ์ „ํžˆ ์—๋Ÿฌ๋Š” ๋‚จ์•„์žˆ์–ด ๋งค์šฐ ๋‹นํ™ฉ์Šค๋Ÿฝ๋‹ค...

react-dom.development.js:14868 Uncaught Error: Rendered fewer hooks than expected. This may be caused by an accidental early return statement.

๊ทธ๋ž˜์„œ..! ์œ„์˜ ์—๋Ÿฌ๋ฌธ๊ตฌ๋กœ ๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ˆ react hooks์˜ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์œ„์™€๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ธ€์„ ๋ณด๊ฒŒ๋˜์—ˆ๋‹ค..!!

react hooks ๊ทœ์น™

  • ๋ฐ˜๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ ํ˜น์€ ์ค‘์ฒฉ๋œ ํ•จ์ˆ˜ ๋‚ด์—์„œ Hooks์„ ํ˜ธ์ถœํ•˜๋ฉด ์•ˆ๋œ๋‹ค
    - ์ด ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•ญ์ƒ ๋™์ผํ•œ ์ˆœ์„œ๋กœ ํ›…์ด ํ˜ธ์ถœ๋œ ๊ฒƒ์„ ๋ณด์žฅ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

    ๐Ÿค” WHY ??????
    useState์™€ useEffect ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    ์กฐ๊ฑด๋ฌธ ์•ˆ์— ํ›…์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž...!
    ๐Ÿ™„ ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ์— ์กฐ๊ฑด๋ฌธ์ด false๋ผ์„œ ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?
    ๐Ÿ‘‰ ๋ฆฌ์•กํŠธ๊ฐ€ ํ›…์ด ํ˜ธ์ถœ๋˜๋Š” ์ˆœ์„œ์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น๋ถ€๋ถ„์ด ๊ฑด๋„ˆ๋›ฐ๊ฒŒ ๋œ๋‹ค๋ฉด ์ˆœ์„œ๊ฐ€ ๋ฐ€๋ ค์„œ ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋œ๋‹ค.
    ๐Ÿ‘€ ๋ฌผ๋ก  ์กฐ๊ฑด๋ฌธ์ด true๋ผ๋ฉด ๋‹คํ–‰์ด์ง€๋งŒ... ์–ธ์  ๊ฐ„ ํ„ฐ์งˆ ์‹œํ•œํญํƒ„์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ทœ์น™์„ ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์ค˜์•ผ ํ•œ๋‹ค.

    ๋งŒ์•ฝ ์กฐ๊ฑด๋ถ€๋กœ effect๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์กฐ๊ฑด๋ฌธ์„ Hooks ๋‚ด๋ถ€์— ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.
  • ํ•ญ์ƒ React ๊ธฐ๋Šฅ์˜ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ์—์„œ Hooks๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด React๊ฐ€ ์—ฌ๋Ÿฌ useState ํ˜ธ์ถœ๊ณผ useEffect ํ˜ธ์ถœ ์‚ฌ์ด์˜ Hooks ์ƒํƒœ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ณด์กด ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ์ œํ•ด๊ฒฐ

SSR์„ ์‚ฌ์šฉํ•˜๋ฉด ์• ์ดˆ์— ํšŒ์›๊ฐ€์ž…ํผ jsx๊ฐ€ ๋ฆฌํ„ด๋˜๊ธฐ์ „์— me ๊ฐ์ฒด ์ธ์‹ํ•ด์„œ return null ํ•ด์ฃผ๋‹ˆ signup ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์•„์˜ˆ ๋ Œ๋”๋ง๋˜์ง€ ์•Š์•„์„œ ์ƒ๊ธฐ๋Š” ์—๋Ÿฌ์˜€๋‹ค..!

์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ

profile
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐Ÿš€

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