๋ทํ๋ฆญ์ค ์ฑ ํด๋ก ์ฝ๋ฉ์ ํ๋ฉด์ ๋ทํ๋ฆญ์ค ์ฑ์ ๋ค์ด๊ฐ ์ปจํ
์ธ ์
๋ก๋์ ์ญ์ ๋ฑ์ ํ๊ธฐ ์ํด์ ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐ์์ผฐ๋ค. ๊ทธ๋ฐ๋ฐ ์๋ฌด๋ฆฌ import์ ํด๋ ์ฐ๊ฒฐ์ด ์๋๋ ๊ฒ์ด๋ค ใ
ใ
ใ
์๋ฌด๋ฆฌ ๊ตฌ๊ธ๋ง์ ํด๋ ๋ค๋ค npm install firebase๋ง ์๊ธฐํ๊ณ ์ฌ์ง์ด ํด๋ดค์ง๋ง ์์ฉ์์๋ค. ๊ฑฐ์ 1-2์๊ฐ๋์ ๋ฏธ์น๋ฏ์ด ๊ตฌ๊ธ๋ง์ ํด์ ์ฐพ์๋๋ค!!! ํด๊ฒฐ๋ฐฉ์!! With version 9 things changed a bit for importing firebase, but there is no need to downgrade to a previous version, there is a “compatibility” option so can use the /compat folder in your imports, li..
๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
onclick ํจ์๋ฅผ ์จ์ props๋ฅผ ๋๊ฒจ์ฃผ๋ ค๊ณ ํ๋๋ฐ ๊ฐ์๊ธฐ ์ด๋ฐ ์๋ฌ๊ฐ ๋ฌ๋ค. ๋ฌธ์ ์ ๋ฐ์์ง์ ์ด์๋ ๋ถ๋ถ์ ์บก์ฒ๋ฅผ ๋ชปํ๋ค. ใ
ใ
๋ฆฌ๋ ๋๋ง์ด ๋ง์ด ์ผ์ด๋ฌ๋ค๊ณ ๊ฒฝ๊ณ ๋ฉ์ธ์ง๊ฐ ๋ฌ๊ฒ์ธ๋ฐ, ๊ตฌ๊ธ๋ง์ ํด์ ์์๋ณด๋ ์ด ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์์ธ์ ๋ ๋ ๊ณผ์ ์์ state๋ฅผ ๋ณํํ๋ ํจ์๊ฐ ์๋ค๋ฉด ๋ฆฌ๋๋๋ง์ด ๊ณ์ ์ผ์ด๋๋ฉด์ ๋ฐ์ํ๋ ์๋ฌ๋ผ๊ณ ํ๋ค. ํด๊ฒฐ๋ฐฉ๋ฒ์ ์๊ฐ๋ณด๋ค ๊ฐ๋จํ๋ค. ํ์ดํ ํจ์๋ฅผ ๋ง๋ค์ด์ ๋๊ฒจ์ฃผ๋ฉด ๋๋ค! ๊ทธ๋ฅ ๋ฐ๋ก ํจ์๋ง ์ ์ง ๋ง๊ณ ํ์ดํํจ์๋ก ์ ์ด์ ๋๊ธฐ๋ฉด ๋๋ค!
โ Error: input is a void element tag and must neither have children nor use dangerouslySetInnerHTML. react ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๊ณผ์ ์ค์ ์ฒ์์ผ๋ก component ๋จ์๊ฐ ์๋๋ผ element ๋จ์๊น์ง ์ชผ๊ฐ์ ๋ง๋ค์ด๋ณด๊ณ ์๋ค. ๋ก๊ทธ์ธ ํผ์ ๋ค์ด๊ฐ input ๋ถ๋ถ์ ๋ง๋๋ ๊ณผ์ ์์ ๋ง๋ ์๋ฌ! styled component๋ฅผ ์์ฑํ๋ ๊ณผ์ ์์ input์ ๊ทธ๋๋ก ์ ์ฉํ ์ ์๊ณ , div๋ก ํ๋ฒ ๊ฐ์ธ์ค์ผํ๋ค. ๊ทธ๋์ InputForm์ ๋ง๋ค์ด ๋๊ณ ๋ฐ์ ์ ์ฉํ ๋๋ div๊ฐ ์๋๋ผ input์ผ๋ก ์ ์ฉํ๋๋ ์ ๋ฐ ์๋ฌ๋ฅผ ๋ง์ดํ๋ค. div๋ก ์์ ํด์ฃผ๊ณ ์ค๋ฅ ๊ณ ์นจ! ๋ญ๋๊น ์ฌ์ฌ์ฉ์ด ์ฉ์ดํ๊ฒ ์ปดํฌ๋ํธ๋ฅผ ๋๋๊ณ ์๋ฆฌ๋จผํธ๋ฅผ ๋๋๋๊ฑด๋ฐ, ..
React-router๊ฐ v6๋ก ์
๋ฐ์ดํธ๋๋ฉด์ react-router-redux์์ ์ธ ์ ์๋ connected-react-router๋ฅผ ์ฐ๋ ค๋ฉด v4,v5๋ฅผ ์ค์นํ์ด์ผํ๋ค. ํ์ง๋ง ๋น์ฐํ ์ต์ ๋ฒ์ ผ๋ ์ง์์ด ๋ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๊ณ ๋ฐฉ๋ฒ์ด ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ฉฐ ๋๋ต ํ ์๊ฐ ์ด์์ ๊ตฌ๊ธ๋ง์ผ๋ก ๋ฐฉ๋ฒ์ ์ฐพ์๋ค. ใ
ใ
ใ
๊ทธ๋ฌ๋ฉด์ ๋ง๋ ์ค๋ฅ. ํฐ๋ฏธ๋์๋ ์ค๋ฅ๊ฐ ๋จ์ง ์์ง๋ง ๋ธ๋ผ์ฐ์ ํ๋ฉด์๋ ๋ถ์ ์ํ๋ฉด์ด …. ใ
Connected React Router๋? ๋ฆฌ๋์ค์์ ์ฃผ์๋ฅผ ๋ณ๊ฒฝ ๋ฐ ํ์ธํ๊ธฐ ์ํด history ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ฉฐ ํ์์ ์ํด ๊บผ๋ด ์ธ ์ ์๋ ์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. ์ค์ ๋ก ๋ก๊ทธ์ธ, ํ์๊ฐ์
๋ฑ์ ์ก์
์ ๊ด๋ฆฌํ๋ฉด์๋ ๋ฐ๋ก ํ์ด์ง๋ฅผ ์ด๋ํ ์ ์๊ฒ ๋์์ค์ ๊ต์ฅํ ํธํ๋ค. ํ์ฐธ์ v6 ์ง์ ๋ฐฉ๋ฒ์ด ์๋๋ฅผ ํค..
โAuth (9.6.6): INTERNAL ASSERTION FAILED: Expected a class definition firebase Authentication ๋ถ๋ถ์ ์งํํ๋๋ฐ ๋ํ๋ฌ๋ ์ค๋ฅ๋ค! class definition? ์ด ๋ญ๊น? ์ถ์ด์ ๊ตฌ๊ธ๋ง์ ํ๋๋ฐ, auth๋ฅผ import ํ๋ ๊ณผ์ ์์ ์ ๋๋ก import ํด์ฃผ์ง ์์์ ์๊ธด ์ค๋ฅ์๋ค. firebase config์์ export ํด์ ๊ฐ์ ธ์ค๋ ค๊ณ ํ์๋๋ฐ ์์ธ์ง ์ฝ๋๊ฐ ๋จนํ์ง ์์์ ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๊ณ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐ๋ผํ๋๋ ํด๊ฒฐ์ด ๋์๋ค! import { getAuth } from 'firebase/auth'; const auth = getAuth();
๐ฉ๐ป๐ป Today I Learned ๐ โจ ๋ธ๋ก๊ทธ ์ด์ ! ๊ณต๋ถํ๋ ๋ด์ฉ๋ค์ ๊ธฐ๋กํด๋ณด์๊ณ ๋ง๋ค์๋ ์๋ํ๋ ์ค ๋ธ๋ก๊ทธ๊ฐ ๊ณ์ํด์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ฉฐ ๋ถ์์ ํ๋๋ ๊ฒฐ๊ตญ์๋ ๋ฎ์๊ฐ๋์ ์ ์์ด ์ ๋๋ ์ํฉ์ด ๋ฐ์. ์กฐํ์๊ฐ ์์ฒญ ๋ฌ๋ค์ถ์๋๋ ๊ณ์ ํ๋ฌ๊ทธ์ธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์์๋๋ณด๋ค. ๊ทธ๋์ ์ด ์ค์ํ ์๊ธฐ์ ๋๋ ๋ธ๋ก๊ทธ ์ด์ ์ ๊ฒฐ์ ํ๋ค. ํ ๋ํด ํ๊ณ ๋ง ๊ฒ๋ ์๋๊ณ ๊ณ์ํด์ ์ด๋ฐ ์์ด๋ฉด ๊ณค๋ํ๋ค๋ ์๊ฐ์ ๋น ๋ฅด๊ฒ ์ด์ ์ ๊ฒฐ์ . ๊ทธ๋ฆฌ๊ณ ์ด์ ์์
์ ์ฐฉ์ํ๋ค! ๋ค ๊ฐ์ ธ์ฌ ์๊ฐ๋ ์๋๊ณ ์๋ํ๋ ์ค ๋ธ๋ก๊ทธ๋ฅผ ๋ฐ๋ก ํ์ํ ์ ์๊ธฐ๋๋ฌธ์ ์ด์ ์ ์๋ฆฌ๋ ๊ธ์ ์ ์ด๋๊ณ ์ฌ๊ธฐ์๋ ํ๋์์ ์๋ํ๋ ์ค ๋ธ๋ก๊ทธ๋ฅผ ์ฐ๋์์ผ ๋ ์๊ฐ์ด๋ค. +์ถ๊ฐ) ๋๋ฉ์ธ ๊ด๋ฆฌ์์ ์ด์ผ๊ธฐ๋ฅผ ํ๋๋ฐ, ๋ธ๋ก๊ทธ์ ์๋ ๊ธ ์์ฒด๋ฅผ ์ด๋ฆด ์๊ฐ ์๋ค๊ณ ํ๋ค. ์๋ ๋ฌด..
โ Warning: Can’t perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function. โ ์ธ๋ง์ดํธ ๋ ์ปดํฌ๋ํธ์์๋ ์ํ๋ฅผ ์ถ์ ํ ์ ์๊ณ , ์ํ๋ฅผ ์ถ์ ํ์ง ์๊ธฐ์ ์์
์ด ์ํ๋์ง๋ ์์ง๋ง, ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ ์ ์์ผ๋, useEffect์ cleanup ํจ์๋ฅผ ์ด์ฉํด๋ผ react๋ก ์์
์ ํ๋ค๋ณด๋ฉด ์ข
์ข
๋ง๋๋ ์๋ฌ ์ค ํ๋์
๋๋ค. ์ด ์๋ฌ๋ fetch ๋ฑ ๋น๋๊ธฐ๋ฅผ ์คํํ๋ ์คํ..