Firebase Auth๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์์ด๋๋ฅผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฅํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.๋จผ์ Firebase ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ , React ํ๋ก์ ํธ์์ Firebase DB์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฒ ์ต๋๋ค.ํ๋ก์ ํธ ์ค์ ์ ํด๋ฆญํ ํ ํ๋จ์ ์๋ firebaseConfi
Firebase Realtime DB๋ฅผ ํตํด์ CRUDํ๋ ์์ ์ ํด๋ณด๊ฒ ์ต๋๋ค.์์ํ๊ธฐ ์ ์๋ ์ด๋ ค์์ ์๋ ์กฐ์ฐจ ๋ชปํ ๊ฑฐ๋ผ๋ ๋๋ ค์์ด ์์ต๋๋ค.ํ์ง๋ง ์๊ฐ๋ณด๋ค ์ด๋ ต์ง ์์ต๋๋ค. ์๋ ๋ด์ฉ๋ง ์ ๋ฐ๋ผ๊ฐ๋ฉด Firebase Realtime DB๋ก CRUD ์ฝ๊ฒ ๊ฐ๋ฅํฉ๋๋ค.์ถ
์ ๋ชฉ ๊ทธ๋๋ก git bash ์์ yarn์ ๊ธ๋ก๋ฒ๋ก ์ค์นํ ํ yarn ๋ฒ์ ์ ํ์ธํ์ ๋ yarn์ด ์๋ค๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.์ด๋ yarn์ด ์ค์น๊ฐ ์๋์๊ฑฐ๋ ๋๋ yarn์ ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ์ง ์์์ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋๋ค.์ด๋ฏธ yarn์ ๊ธ๋ก๋ฒ๋ก ์ค์นํ๋๋ฐ๋ yarn
๊ฐ์ธ ํฌํธํด๋ฆฌ์ค ์ฌ์ดํธ๋ฅผ ๋ง๋ค๋ฉด์ ๊ธ์์ ํ์๊ธฐ ํจ๊ณผ๋ฅผ ์ฃผ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์์ต๋๋ค.์ด๋ ์ด๋ฒ์ ์๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ํ์๊ธฐ ํจ๊ณผ๋ฅผ ๋ผ ์ ์์ต๋๋ค.ํ์ฌ ๋ฆฌ์กํธ ์ต์ ๋ฒ์ ์ธ 18๋ฒ์ ์์๋ ์ ๋์ํ๋ ๊ฒ์ ํ์ธํ์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์์ฝ๊ฒ ํ์๊ธฐ ํจ๊ณผ๋ฅผ ์ฌ
๊ฐ์ธ ํ๋ก์ ํธ๋ ํ ํ๋ก์ ํธ๋ฅผ ํ ๋ ReadMe.md ํ์ผ์์ ์์ ๊ทธ๋ฆผ์ฒ๋ผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ํ์ํ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค.Q. ์ด๋ป๊ฒ ๋ง๋ค ์ ์์๊น์?์ฐ์ shields.io ์ฌ์ดํธ์์ markdown badges๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ง๋ค ๊ณ ์ ์
์์ฃผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ ๋ช ๊ฐ์ง ์ค์ ํ ์ด๋ธ๋ง ํ์ธํ ๊ฒ์ ๋๋ค. ๋ค ์ฝ๋๋ฐ ์ ํํ 5๋ถ ๊ฑธ๋ฆฝ๋๋ค. ๊ฐ์๋ค.
redux-toolkit์ ์ด์ฉํด์ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.๋น๋๊ธฐ ์ฒ๋ฆฌ๋ createAsyncThunkํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ํจ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ณ ์ด๋ค ๊ธฐ๋ฅ์ด ์๋์ง ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
์ด๋ฒ ์ฅ์์๋ react์์ react-redux๊ณผ redux-toolkit์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.์ด ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ค์์ ์ ์ฅํ ์ ์์ต๋๋ค.๋, ์ํ๋ ์ปดํฌ๋ํธ์์ ์๋ณธ ๊ฐ์ ๊ฐ์ ธ์์ ์ฌ์ฉํ ์ ์๊ณ ์กฐ์ํ ์ ์๊ฒ ๋ฉ๋๋ค.์ง์ญ์์ ๋ฐ์ด
React์์ TypeScript๋ฅผ ์ ์ฉํด์ Todo ์ฑ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ๋ณธ๋ก ์์๋ ํ์ผ๋ง๋ค ์ฝ๋๊ฐ ๋ฐ๋๋ ์ค๋ ์ท์ ๋์์ต๋๋ค. ์ ๋ฆฌ๋์๋ ๊ฐ ํ์ผ์ ์ฝ๋๋ฅผ ๋ฃ์์ผ๋ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ข์ต๋๋ค.
value์ ๊ฐ์ ์ง์ ํ๋ฉด input ํ๊ทธ๊ฐ ์ฝ๊ธฐ ๋ชจ๋๊ฐ ๋ฉ๋๋ค. ๋ ์ด์ input ํ๊ทธ ๋ด์ฉ์ ์์ ํ ์ ์๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ์ ์ด๊ธฐ๊ฐ์ ๋๊ณ input ํ๊ทธ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ค๋ฉด defaultValue ์์ฑ์ ์ฌ์ฉํ๋ผ๊ณ ํฉ๋๋ค.์ค๋ฅ๋ ๊ฒฝ๊ณ ๋ฌธ ์์ด input ํ๊ทธ ์
์ด๋ฒ ์ฅ์์๋ ์๋์ ๊ฒ์๋ ๊ณผ์ผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.firebase๋ฅผ ์ด์ฉํด์ ์๋ฒ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ react๋ก ๊ฐ์ ธ์์ ์ฌ์ฉํ๋ ์์ ์ ํ๊ฒ ์ต๋๋ค.์ ๋ CSS ํ์ผ์ ์์ฑํด ๋์์ง๋ง, CSS ์ฝ๋๋ ์ ์ฉํ์ง ์์์ต๋๋ค. ๊ธฐํธ์ ๋ง๊ฒ CSS๋ฅผ ์ ์ฉํ์๋ฉด
์ด๋ฒ ์ฅ์์๋ Firebase์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.Firebase๋ฅผ ์ด์ฉํด์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฑ๋กํ๊ฒ ์ต๋๋ค.๊ทธ๋ฆฌ๊ณ React์์ DB๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํด ๋ณด๊ฒ ์ต๋๋ค.๊ตฌ๊ธ์ ๋ชจ๋ฐ์ผ ๋ฐ ์น ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ซํผ์ ๋๋ค.๋ฐฑ์๋ ์๋ฒ ๊ธฐ๋ฅ์ ํด๋ผ
์ด๋ฒ ์ฅ์์ ๋ฆฌ์กํธ ๋ผ์ฐํฐ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.๋ผ์ฐํ ์ ๋ํ ์์ธํ ์ค๋ช ๊ณผ ์์๋ฅผ ๋ณด๋ฉด์ ์ดํดํ๋๋ก ํ๊ฒ ์ต๋๋ค.์ด๊ธฐ ์น ์ฌ์ดํธ๊ฐ ํ๋ฉด์ ํด๋นํ๋ ์น ๋ฌธ์๋ฅผ ์ผ์ผ์ด ์ ์์๋ฒ์ ์ ์ฅ๋ ๊ฐ์ ํ๋ฉด์ ๋ฐ์ํ๋ ๋์ ์ธ ์น ๋ฌธ์ ๋๊ตฌ ๊ฐ๋ฐ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(Server Sid
๋ฆฌ์กํธ์์ Context๋ฅผ ์ฌ์ฉํด์ ์ํ๊ด๋ฆฌ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.Context๋ ์ปดํฌ๋ํธ๊ฐ ์ค์ฒฉ๋์ด ์๋ ์ํฉ์์ ์ํ ๊ฐ์ ์ ๋ฌํ๊ธฐ ํธ๋ฆฌํฉ๋๋ค.์์๋ฅผ ์ดํด๋ณด๋ฉด์ Context ๊ฐ๋ ์ ๋ํด์ ์์ธํ ๋ณด๊ฒ ์ต๋๋ค.์ดํ๋ฆฌ์ผ์ด์ ์์ ์ ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ ๊ฐ์
React์์ useState ๋์ ์ํ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ useReducer๋ฅผ ์ด์ฉํ ์ค์ต๋ฌธ์ ๋ฅผ ํ์ด๋ณด๊ฒ ์ต๋๋ค.์ค์ต ๋ฌธ์ ๋ฅผ ํ๋ฉด์ useReducer๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.๐CSS styling์ ๋ณธ์ธ์ ์ทจํฅ์ ๋ง๊ฒ ์ ์ฉํ์๋ฉด ๋ฉ๋๋ค. ์์ด๋ ๋ฌด๋ฐฉํฉ๋๋ค
useReducer()๋ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ๊ด๋ฆฌํ ๋ ์ฌ์ฉํ๋ Hooks ์ ๋๋ค.ํน์ง์ปดํฌ๋ํธ ์ํ ์ ๋ฐ์ดํธ ๋ก์ง์ ์ปดํฌ๋ํธ์์ ๋ถ๋ฆฌ ๊ฐ๋ฅํฉ๋๋ค.๋ค๋ฅธ ์ปดํฌ๋ํธ์์๋ ํด๋น ๋ก์ง์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.useReducer() ์ฌ์ฉ ๋ฐฉ๋ฒstate : ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ์ํ ๊ฐd
React์ Hook ์ค์ useState์ useEffect, useRef๋ฅผ ์ด์ฉํ ์ค์ต ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.๋ฌธ์ ๋ฅผ ํ๋ฉด์ useEffect์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.useRef๋ฅผ ์ด์ฉํ์ ๋ ์ด๋ ํ ํจ๊ณผ๋ฅผ ๋๋ฆด ์ ์๋์ง๋ ์์๋ณด๊ฒ ์ต๋๋ค.๋ณ์๋ฅผ ์ ์ฅํ s
์ด๋ฒ ์๊ฐ์๋ React์์ state์ event๋ฅผ ์ค์ตํ ์ ์๋ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.React์์ ๋ณ์๋ฅผ ์ ์ฅํ ๋ useState๋ฅผ ์ด์ฉํด์ ์ ์ฅํ๊ณ , state๊ฐ์ ๋ฐ๊ฟ์ฃผ๋ ํจ์๋ฅผ ์ด์ฉํด์ state๊ฐ์ ๋ฐ๊พธ๋ ๋ฐฉ์์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.๋ถ๋ชจ ์ปดํฌ๋ํธ์์
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด์ ์ซ์, ์๊ฐ, ๋ ์ง ํ์์ ๊ฐ๊ฒฐํ๊ฒ ๋ํ๋ด๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฅ ๊ฐ์ฒด(Intl)์ ์ฌ์ฉํ๋ฉด ์ข์ต๋๋ค.Intl ๊ฐ์ฒด๋ ๋ฌธ์์ด ๋น๊ต, ์ซ์ ํ์, ๋ ์ง ๋ฐ ์๊ฐ ํ์์ ์ ๊ณตํ๋ ECMAScript ๊ตญ์ ํ API์ ๋ค์์คํ์ด์ค
ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ๊นํ๋ธ๋ก ํ์ ํ๋ ๊ณผ์ ์ ๊ฐ๋จํ๊ฒ ์์๋ณด๊ฒ ์ต๋๋ค.๋จผ์ , ๊ธฐ์กด์ ์กด์ฌํ๋ ์ ์ฅ์๋ฅผ fork๋ฅผ ํ ํ, ๋ด๊ฐ forkํ ์ ์ฅ์๋ฅผ ๋ด ์ปดํจํฐ์ clone ํฉ๋๋ค.upstream ํค์๋๋ฅผ ํตํด์ push/pullํ ์ ์ฅ์๋ฅผ ์ค์ ํฉ๋๋ค.