๐ค ์์งlog ๐ค
Npm package install์ Invalid hook call ์๋ฌ ๋ณธ๋ฌธ
"Invalid hook call. Hooks can only be called inside the body of a function component"
์ด๋ฌํ ์๋ฌ๋ฅผ ๋ง์ฃผํ์ จ๋ค๋ฉด ์๋ฌ๋ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์์ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
1. Having a mismatch between the versions of react and react-dom.
(react ๋ฐ react-dom์ ๋ฒ์ ์ด ์ผ์นํ์ง ์์ต๋๋ค.)
โ ๋ฒ์ ์ด ๋์ผํ์ง ํ์ธํด๋ณด์ธ์.
2. Having multiple versions of the react package in the same project.
(๋์ผํ ํ๋ก์ ํธ์ ์ฌ๋ฌ ๋ฒ์ ์ ํจํค์ง๊ฐ ์์ต๋๋ค.)
โ ์ฌ๋ฌ ๋ฒ์ ์ ํจํค์ง๊ฐ ์๋์ง ํ์ธํด๋ณด์ธ์.
3. Trying to call a component as a function, e.g. App() instead of <App />
(์ปดํฌ๋ํธ ํจ์๋ก ํธ์ถํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, <App /> ๋์ ์ App()์ ์ฌ์ฉ)
โ ์ ํํ ์ปดํฌ๋ํธ ํจ์๋ฅผ ์์ฑํ๋์ง ํ์ธํด๋ณด์ธ์.
4. Using hooks inside of classes or a function that isn't a component or a custom hook.
function counter({
๐ฃ๏ธ ์ด๋ฐ ํจ์๊ฐ ์๋ค๋ ๊ฐ์ ํ์ ์ด๋ฆ์ ๋๋ฌธ์๋ก ๋ฐ๊พธ์ด์ค์ผ ํฉ๋๋ค.
โ
function Counter({
๐ฃ๏ธ ๋ํ ์ด๋ฆ ์์ 'use'๊ฐ ๋ถ์ง ์์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ ์ hooks ๋ผ๊ณ ํ ์ ์์ต๋๋ค.
๐ฃ๏ธ ํจ์ ์ปดํฌ๋ํธ ๋๋ ์ฌ์ฉ์ ์ ์ hooks ๋ด๋ถ์์๋ง hooks๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ด๋ฆ ์์ 'use'๋ฅผ ๋ถ์ฌ์ค๋๋ค.
โ
function useCounter({
โ
React๋ ์ด์ useCounter๋ฅผ ์ฌ์ฉ์ ์ ์ hooks๋ก ์ธ์ํ๋ฏ๋ก ๋ด๋ถ์์ hook์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
โ function์ ์ด๋ฆ์ ๋๋ฌธ์๋ก ์์ํด์ผ ํฉ๋๋ค.
โ ํจ์ ์ปดํฌ๋ํธ, ์ฌ์ฉ์ ์ง์ hooks ๋ง๊ณ ๋ค๋ฅธ ๊ณณ์์ hook๋ฅผ ์ง์ ํ ๊ฒ ์๋์ง ํ์ธํด๋ณด์ธ์.
์ ๊ฐ์ ๊ฒฝ์ฐ๋ 1๋ฒ react์ react-dom์ ๋ฒ์ ์ด ์ผ์นํ์ง ์์์ ์๋ฌ๊ฐ ๋ฐ์ํ์์ต๋๋ค.
๐ ํด๊ฒฐ๋ฐฉ๋ฒ
ํ๋ก์ ํธ์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์์ ํฐ๋ฏธ๋์ ์ด๊ณ react๋ฐ react-domํจํค์ง์ ๋ฒ์ ์ ์ ๋ฐ์ดํธํ์ฌ
๋ฒ์ ์ด ์ผ์นํ๊ณ ์ค๋๋ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์์ง ์์์ง ํ์ธํฉ๋๋ค.
# ๐๏ธ with NPM
npm install react@latest react-dom@latest
# ๐๏ธ ONLY If you use TypeScript
npm install --save-dev @types/react@latest @types/react-dom@latest
# ------------------------------------------------------------------
# ๐๏ธ with YARN
yarn add react@latest react-dom@latest
# ๐๏ธ ONLY If you use TypeScript
yarn add @types/react@latest @types/react-dom@latest --dev
โ ์ค๋ฅ๊ฐ ๊ณ์๋๋ค๋ฉด node_modules, package-lock.json (package.json ์๋) ํ์ผ์ ์ญ์ ํ๊ณ
npm ์ค์น๋ฅผ ๋ค์ ์คํํ ํ IDE(VSCode)๋ฅผ ๋ค์ ์์ํด๋ณด์๊ธธ ๋ฐ๋๋๋ค.
์ด ์ค๋ฅ๋ ์ข ์ข ๋์ผํ ํ๋ก์ ํธ์์ ์ฌ๋ฌ ๋ฒ์ ์ ๋ฐ์์ด ์์ ๋ ๋ฐ์ํฉ๋๋ค.
# ๐๏ธ delete node_modules and package-lock.json
rm -rf node_modules
rm -f package-lock.json
# ๐๏ธ clean npm cache
npm cache clean --force
npm install
โค๏ธ ๋์ ์ฃผ์ ๋ถ :
https://bobbyhadz.com/blog/react-invalid-hook-call-hooks-can-only-be-called-inside-body
'๐ธ Library' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
TypeScript๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ง๋ค๊ธฐ (0) | 2022.11.09 |
---|---|
NPM ๊ณผ YARN (0) | 2022.11.08 |
NPM Package Version (0) | 2022.11.07 |
NPM Package ์์ฑ ๋ถํฐ ๋ฐฐํฌ _์ง์ง์ง์ง์ต์ข ๐ (1) | 2022.11.02 |