1์ ๋ท์งธ ์ฃผ๋ฅผ ๋ณด๋ด๋ฉฐ ์ค ์ฐํด๋ฅผ ๋ณด๋ด๊ณ ํ๋ก์ ํธ๋ก ์ ์ ์์ด ๋ฐ๋นด๋ ํ ์ฃผ!.. ์ด๋ฒ ํ๋ก์ ํธ์์๋ ํด๋ณด๊ณ ์ถ์๋ ๋ถ๋ถ๋ค์ ๊ฝค ํ๊ณ ์์ด์ ์ฆ๊ฒ๋ค. ํ์๋ค๋ ๋ค๋ค ์ฌ๋ฐ๊ธฐ๋ ํ๊ณ ~ ๐ Fact ์ฑ๋ฆฐ์งํ์ ํฉ๊ฒฉํ๋ค!! ์ธ์ ์คํ ๋ฆฌ์ง๋ฅผ ์ด์ฉํด์ ํ์๊ฐ์ , ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค. ๊ฒ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค. ํ๋ก์ ํธ ๋ง๋ฌด๋ฆฌ๋ฅผ ํฅํด ๋ฌ๋ฆฌ๋ ์ค! ๊ฑฐ์ ๋์๋ฝ์ด๋ค. ๊ตฌํํด๋ณด๊ณ ์ถ์๋ ๊ธฐ๋ฅ๋ค์ ๊ตฌํํ๋ค. (ํ์๊ฐ์ ์ ๋น๋ฐ๋ฒํธ ๊ฒ์ฆ.. ํค๋ ๋ณ๊ฒฝ.. ๋ฑ๋ฑ) ๐ Feeling ๋ค๋ฅธ ์๋๋ ํด๋ณด๊ณ ์ถ์ ๊ฒ๋ค์ ํด๋ณด๊ณ ์์ด์ ์ฆ๊ฒ๋ค! ์์ธ์ ์ฐพ์์ ์ค๋ฅ๋ ๋ฒ๊ทธ๋ฅผ ํด๊ฒฐํ ๋์ ์พ๊ฐ์ ์ฌ์ ํ๋ค. ์ด๋ฒ ํ๋ก์ ํธ๋ ๋๋ฆ ์์ฑ๋๋ฅผ ๋์ธ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์ด ์ข๋ค. ๋ค๋ฅธ ํ์๋ค์ ๊ธฐ๋ฅ ๊ตฌํ์ ๊ฐ์ด ๊ณ ๋ฏผํ๋ฉด์ ์ฌ๋ฌ ๋ก์ง์ ์๊ฐํด ๋ณผ ์ ์์ด..
Today, What I learned? ์ด๋ฒ ํ๋ก์ ํธ์์ ๊ฒ์๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ณผ์ ์ ๊ธฐ๋กํ๋ค. ์์ฑํ ๊ธฐ๋ฅ์ ์ด๋ ๋ค. ์ด๋ฏธ์ง๊ฐ ๋๋ฌด ์์ง๋ง!.. ํ๊ธ, ์์ด ๋๋ฌธ์, ์๋ฌธ์๊ฐ ๋ชจ๋ ๊ฒ์์ด ๊ฐ๋ฅํ๋๋ก ๊ตฌํํ๋ค. ๊ฒ์๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์์์, ์ด๋ฒ ํ๋ก์ ํธ์ ๊ฒ์ ๊ธฐ๋ฅ์ ์์ํ๋ ํ๋ก์ ํธ์๋ ์กฐ๊ธ ๋ค๋ฅธ ์ฑ๊ฒฉ์ ๊ฒ์ ๊ธฐ๋ฅ์ ๊ตฌํํด ๋ณด๊ธฐ๋ก ํ๋ค. ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ์ ๋ 20๋ช ์ ๋์ ์ํฐ์คํธ ๋ชฉ๋ก์ ๊ฐ์ง๊ณ ์์๊ณ , (๋ฉฐ์น ์ฌ์ด ์กฐ๊ธ ๋ ๋์์) ์ด๋ค ๋จ์ด์ ์ผ์นํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์๋ด๊ธฐ ๋ณด๋ค๋, ํด๋น ์ํฐ์คํธ์ ์ ํ๋ธ ๋ชฉ๋ก ํ์ด์ง๋ก ๋ฐ๋ก ๋์ด๊ฐ๋ ๊ฒ ๋ ์ข์ง ์์๊น? ์ถ์ด์ ๊ทธ๋ ๊ฒ ํด๋ณด๊ธฐ๋ก!.. ๊ฒ์์ฐฝ ์ธ๋ถ ํด๋ฆญ ๊ฐ์ง ์ด๋ฒ์๋ ์์ด์ฝ์ ํด๋ฆญํ์ ๋ ๊ฒ์์ฐฝ์ด ๋์ค๋ UI๋ฅผ ๊ตฌํํด ๋ณด์๋ค. ํค๋ ์์ ๋ค๋ฅธ ์์ญ์ ํด๋ฆญํ..
Today, What I learned? ํ์ ๋ถ์ SOS๋ก!.. ๋ฆฌ๋์ค๋ก ๊ตฌํ๋์ด ์๋ API ๋ถ๋ฌ์ค๋ ๋ก์ง์ redux-toolkit๊ณผ redux-thunk๋ก ๋ฆฌํฉํ ๋ง ํ๋ ๊ณผ์ ์ ๊ฐ์ด ๊ณ ๋ฏผํ๊ฒ ๋์๋ค. ๊ณ ๋ฏผ์ ์๊ฐ์ด ๊ธธ์๋ ์ด์ ๋ ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ํ์ ์คํฌ๋ฆฝํธ๋ก ๊ตฌ์ฑ๋ ํ๋ก์ ํธ์๊ธฐ ๋๋ฌธ์ด๋ค!.. ํ์ ์คํฌ๋ฆฝํธ์์์ createAsyncThunk API๋ฅผ ๊ฐ์ ธ์ค๋ ๊ณผ์ ์์, ํ์ํ ์ ํ์ ๋งค๊ฐ๋ณ์๊ฐ 3๊ฐ๋ ๋์๊ธฐ ๋๋ฌธ์ ์ข ๋ ์ด๋ ค์ ๋ ๊ฒ ๊ฐ๋ค. ์๋๋ ์์ฑ๋ ๋ก์ง์ด๋ค. payload์ ํด๋นํ๋ ๋ถ๋ถ์ ๊ตฌ์กฐ๋ถํดํ ๋น์ผ๋ก ๊ฐ์ ธ์์ ์ฌ์ฉํ๊ณ ์๋ค. export const getSearchVideos = createAsyncThunk( 'getSearchVideos', async ({ channelId, ord..
Today, What I learned? ํ์ด์ด๋ฒ ์ด์ค๋ก ์์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ์ค ๊ตฌ๊ธ๊ณผ ๊นํ๋ธ๋ ์ฝ๊ฒ ๋์์ง๋ง, ์ ํ์ ์ ํ ๊ฐ๋ฐ์์ ๋ฑ๋ก์ด ๋์ด์์ด์ผ ํ๊ณ .. ์นด์นด์ค๋ ์นด์นด์ค ์ธ์ฆ ํ ํ์ด์ด๋ฒ ์ด์ค๋ก ๋ณด๋ด์ ํ์ด์ด๋ฒ ์ด์ค์ ํ ํฐ์ ๋ฐ์์ฌ ์ ์๋๋ก ํด์ผ ํ๊ณ .. (์๊ฐ์ด ์ข ๋ ์ฌ์ ๋ก์ธ ๋ ๋์ ํด๋ณด๊ณ ์ถ์) ํธ์ํฐ๋ฅผ ์ถ๊ฐํด ๋ณด์! ์ถ์ด์ ํธ์ํฐ๋ฅผ ์ถ๊ฐํ๋ ๊ณผ์ ์ ๊ธฐ๋กํด ๋ณธ๋ค. ํ์ด์ด๋ฒ ์ด์ค ์ธ์ฆ ๋ถ๋ถ์ ํธ์ํฐ ์ถ๊ฐ ๋จผ์ ํ์ด์ด๋ฒ ์ด์ค ๋ก๊ทธ์ธ ์ ๊ณต์ ์ฒด์์ ํธ์ํฐ๋ฅผ ์ฌ์ฉ์ค์ ์ผ๋ก ์ถ๊ฐํด ์ฃผ๊ธฐ. ์๋ ํ์ด์ด๋ฒ ์ด์ค ๊ณต์ ๋ฌธ์์ ๋ฐ๋ผ ํ๋ํ๋ ํด๊ฐ๋ฉด ๋๋๋ฐ, ์ผ๋จ ์ฌ์ฉํ ์น(ํน์ ์ฑ)์ ํธ์ํฐ ๊ฐ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฑ๋กํด์ฃผ์ด์ผ ํ๋ค. https://firebase.google.com/docs/auth/web/twi..
Today, What I learned? ์ด๋ฒ ํ๋ก์ ํธ์์๋ ๋ก๊ทธ์ธ ์ฌ๋ถ์ ๋ฐ๋ผ์ ํค๋๋ฅผ ๋ค๋ฅด๊ฒ ๋ ธ์ถํด์ผ ํ๋ ๊ธฐ๋ฅ์ด ์๋ค. ์ด ๋ถ๋ถ์ ๋ก์ง์ ์ด๋ป๊ฒ ์งค ๊ฒ์ธ ๊ฐ์ ๋ํ ์์ ๊ณ ์ฐฐ... ๊ตฌํํด์ผ ํ๋ ๋ถ๋ถ ๋ก๊ทธ์ธ์ด ๋์ด ์์ง ์๋ค๋ฉด ์๋์ ๊ฐ์ด ๋ก๊ทธ์ธ ๋ฒํผ์ด ๋ณด์ด๋ ํค๋๋ฅผ, ๋ก๊ทธ์ธ์ด ๋์๋ค๋ฉด ๊ฒ์๊ณผ ๋ง์ดํ์ด์ง๋ก ๋ค์ด๊ฐ ์ ์๋ ์์ด์ฝ์ด ์๋ ํค๋๋ฅผ ๋ณด์ฌ์ฃผ์ด์ผ ํ๋ค. ์ฐธ๊ณ ๋ก ์ฐ๋ฆฌ ํ๋ก์ ํธ์์๋ ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ํตํด ๋ก๊ทธ์ธ์ด ์ด๋ฃจ์ด์ง๋ค. ์ฒซ ์๋ ์ฒ์์๋ useState๋ฅผ ์ด์ฉํด์ isLoggedIn ์ด๋ผ๋ boolean ๊ฐ์ ์ํ๋ก ๊ด๋ฆฌ๋ฅผ ํ๋ ค๊ณ ํ๋ค. const [isLoggedIn, setIsLoggedIn] = useState(false); ... useEffect(()=>{ authService.on..
1์ ์ ์งธ ์ฃผ๋ฅผ ๋ณด๋ด๋ฉฐ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ตํ๋ณด๋ฉฐ ์ด์ ์ต์ข ํ๋ก์ ํธ ์ ๋ง์ง๋ง ํ๋ก์ ํธ๊ฐ ์์๋ ํ ์ฃผ!.. ๐ Fact ํ์ ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ ๊ฐ์๋ฅผ ๋ค์๋ค. ์ ์ ๋ฆฌ๋์ค๋ก ๋ง๋ค์๋ ํฌ๋๋ฆฌ์คํธ๋ฅผ ๋ฆฌ๋์ค ํดํท๊ณผ ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ฆฌํฉํ ๋ง ํ๋ค. ๋ฌธ์์ด ๋ฌธ์ ์ด๊ธด ํ์ง๋ง ํ๋ก๊ทธ๋๋จธ์ค 2๋จ๊ณ ๋ฌธ์ ๋ฅผ ํ์๋ค! ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํ๋ค. ์ฑ๋ฆฐ์งํ ์ธํฐ๋ทฐ๋ฅผ ๋ดค๋ค. ๐ Feeling ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ฆฌํฉํ ๋ง ํ๋ฉด์ ์๊ฐ๋ณด๋ค ๋ง์ ์๋ฌ์ ๋นํฉํ๋ค. ๊ทธ๋๋ ์๊ฐ๋ณด๋ค ๊ฒ์ํ์ ๋ ์๋ฃ๊ฐ ๋ง์์ ๋ค์ํ ์๋ฌ๋ฅผ ์ด๋ ต์ง ์๊ฒ ํด๊ฒฐํ ์ ์์ด ์ข์๋ค. ์ด๋ฒ์ ๊ทธ๊ฐ ๋ด๋นํ์ง ์์๋ ๊ธฐ๋ฅ์ ๋งก์์ ์ข๋ค. (ํ์๊ฐ์ , ๋ง์ดํ์ด์ง ์ชฝ) ๐ Finding ํ์ ์คํฌ๋ฆฝํธ ๊ธฐ์ด ๋ฌธ๋ฒ ๊ธฐ์กด ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ง์ด๊ทธ๋ ์ด์ ๋ฆฌ์กํธ์์ ์ด์ ..
Today, What I learned? ํ์ ์คํฌ๋ฆฝํธ๋ก ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ๋ฆฌํฉํ ๋งํ๋ ๊ฒ์ด ์๋๋ผ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๊ธ๋ก ๋จ๊ฒจ๋ณด๋ ค๊ณ ํ๋ค. ํ๋ก์ ํธ ์์ฑ CRA๋ฅผ ํตํด ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํ๋ค. npx create-react-app ํ๋ก์ ํธ๋ช --template typescript ์ด ๋ --template์ ๊ผญ ๋ฃ์ด์ฃผ์ด์ผ ์ฒ์๋ถํฐ ํ์ ์คํฌ๋ฆฝํธ๋ก ํ์ผ๋ค์ด ์คํ๋๋ค. --template์์ด typescript๋ง ๋ฃ์ ๊ฒฝ์ฐ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ก CRA๊ฐ ๋์ด์ ๋ค์ ํ๋ก์ ํธ๋ฅผ ์์ฑํด์ผ ํ ์ ์๋ค. ์ ์์ ์ผ๋ก ๋ช ๋ น์ด๊ฐ ์คํ๋์๋ค๋ฉด ์ด๋ ๊ฒ ts, tsx๋ก ํ์ผ๋ค์ด ๋ง๋ค์ด์ ธ ์๊ณ , tsconfig.json๊น์ง ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจ๋์ด ์์ ๊ฒ์ด๋ค. react-app-env.d.ts ? ์ผ๋ฐ์ ์ธ ๋ฆฌ์ก..
Today, What I learned? ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ตํ๋ฉด์ ์๊ฐ๋ณด๋ค ์ฝ์ง ์์์ ๋ง์ด ๋๋ผ๋ ์ค..! ํนํ ํท๊ฐ๋ฆฌ๋ ๋ช๋ช ๊ฐ๋ ์ ์ข ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. JS์ TS ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ํ์ . ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋, ์ฆ ๋ฐํ์์ ๋ณ์์ ํ์ ์ด ๊ฒฐ์ ๋๋ค. ๋ฐ๋๋ก ํ์ ์คํฌ๋ฆฝํธ๋ ์ ์ ํ์ . ์ปดํ์ผ ํ์์ ๋ณ์์ ํ์ ์ด ๊ฒฐ์ ๋๋ค. ์ด๊ฒ์ ์ฆ ํ๋ก์ ํธ๊ฐ ์คํ๋๊ธฐ ์ ์ ๋ฏธ๋ฆฌ IDE์์ ๋ฐ์ํ ์ค๋ฅ๋ฅผ ์ ์ ์๋ค๋ ๊ฒ! any ํ์ any ํ์ ์ ๋ชจ๋ ํ์ ์ ํฌํจํ๋ ํ์ ์ด๋ค. (์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๋ณ์๋ any ํ์ ์ด๋ผ๊ณ ํ ์ ์๋ค.) ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ๋ฅผ ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ฆฌํฉํ ๋งํ๋ ๊ฒฝ์ฐ ์์๋ก ์ฌ์ฉํ๋ฉฐ ์ ์ง์ ์ผ๋ก ํ์ ์ ์ฐจ์ฐจ ๋ฐ๊ฟ๋๊ฐ ๋ ์ ์ฉํ๋ค. ํ์ง๋ง ๋ชจ๋ ํ์ ์ ํฌํจํ๋ค๊ณ ํด์ ๋ฌด๋ถ๋ณํ๊ฒ ์ฌ์ฉํ๋ฉด ํ์ ์ค..
Today What I learned? ์ด์ ์ ์ด์ด ๋ฆฌ๋์ค ํดํท ํฌ๋๋ฆฌ์คํธ๋ฅผ ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ฉฐ ํด๊ฒฐํ ๋ง์ ์ค๋ฅ๋ค์ ๊ธฐ๋กํด ๋ณธ๋ค..!! ์ด์ฐ์ด์ฐ ๋ชจ๋ ์๋ฌ๋ฅผ ํด๊ฒฐํ๊ณ ์ ์ ์๋์ด ๋๊ณ ์๋ค.. ๐ฅบ ๐ง ๋ฒํผ ์ปดํฌ๋ํธ์์ ๋ฐ์ํ ์ค๋ฅ ํด๊ฒฐ Type '' is missing the following properites from type ~~ Type '' is missing the following properites from type ~~ ์๋ง ๋ด๋ ๋ฒํผ ์ปดํฌ๋ํธ์ ๋ค๋ฅธ ํจ์ props๊ฐ ์๋ค๋ ์๊ธฐ ๊ฐ๋ค. ๊ธฐ์กด ์ฝ๋๋ ์ ํจ์๋ค ์ค ํ๋๋ง ๋ฃ์ด์ฃผ์ด ๋ฒํผ ์ปดํฌ๋ํธ๋ฅผ ๊ณตํต์ผ๋ก ์ฐ๊ณ ์๋ ์ํ์๊ธฐ ๋๋ฌธ์ ๊ผญ ๋ชจ๋ ํจ์ props๋ฅผ ๋ฐ์ ํ์๊ฐ ์์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ ํ์ ์ผ๋ก ๋ค์ด๊ฐ์ผ ํ๋ ํ์ ์์ฑ์..
Today, What I learned? ์ผ์ฐจ์ ์ผ๋ก ํฌ๋๋ฆฌ์คํธ๋ฅผ redux-toolkit์ผ๋ก ๋ฆฌํฉํ ๋ง ํ ํ์ ๋ณธ๊ฒฉ์ ์ผ๋ก ํ์ ์คํฌ๋ฆฝํธ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ค์ด๊ฐ๋ฉฐ ๋ง๋๊ฒ ๋ ์ค๋ฅ๋ค์ ๊ธฐ๋กํด๋ณธ๋ค. ์๋ฌ๊ฐ ๊ผฌ๋ฆฌ์ ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๊ณ ๋ฐ์ํด์ ๋ชจ๋ ์๋ฌ๊ฐ ์์ ํด๊ฒฐ๋ ๊ฒ์ ์๋๊ณ ํ์ฌ ์งํํ์ด๋ค.. ๐ ๋ด์ผ์ฏค์ ๋ค ์์ฑํ๊ธฐ ์์๊น!.. ๐ง useRef()์ focus ๊ด๋ จ ์๋ฌ Property 'focus' does not exist on type 'string' Property 'focus' does not exist on type 'string' useRef()์ ํ์ ์ด ์ ๋๋ก ์ ํด์ ธ์์ง ์์ ๋ฐ์ํ ์๋ฌ.. ์ฐพ์๋ณด๋ useRef๋ฅผ DOM ์กฐ์ ์ฉ๋๋ก ์ฌ์ฉํ๋ ค๋ฉด ์๋์ ๊ฐ์ด HTMLํ๊ทธ๋ฅผ ์ง์ ํด์ค์ผ ํ๋ค๊ณ .. ์ง์ญ๋ณ..
Comment