Intro Firebase Auth๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์์ด๋๋ฅผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฅํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋จผ์ Firebase ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ , React ํ๋ก์ ํธ์์ Firebase DB์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฒ ์ต๋๋ค. Firebase 1. Firebase ํ๋ก์ ํธ ์์ฑ ํฉ๋๋ค. ์ค์ ๊น์ React MUI ์ฐ๋ ๋ฐฉ๋ฒ์ด๋ ๋ณด๊ณ ๊ฐ์์ฃ . ์์ฃผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ ๋ช ๊ฐ์ง ์ค์ ํ ์ด๋ธ๋ง ํ์ธํ ๊ฒ์ ๋๋ค. ์ฝ๋๋ ๊ณต์ ๋ฌธ์์ ์๋ ๊ฑธ ๊ทธ๋๋ก ๋ณต๋ถํด์ ์ดํดํด ๋ณด๊ฒ ์ต๋๋ค. ๋ค ์ฝ๋๋ฐ ์ ํํ 5๋ถ ๊ฑธ๋ฆฝ๋๋ค. ๊ฐ์๋ค. Data Table ์ค์ตํด๋ณผ ํ ์ด๋ธ ํ์ธ 1. mui ๊ธฐ๋ณธ ๋ชจ๋ ์ค์น 2. @mui/x-data-grid ์๋ค๊ณ ์ค๋ฅ๊ฐ ๋๋ฉด? ๋ชจ๋ ์ค์น ํ๊ธฐ 3. ์ฝ๋ ํ์ธ ํฌ๊ฒ 4ํํธ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. 1๋ฒ DadaGrid ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ @mui/x
Intro redux-toolkit์ ์ด์ฉํด์ ๋น๋๊ธฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ createAsyncThunkํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ํจ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ณ ์ด๋ค ๊ธฐ๋ฅ์ด ์๋์ง ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค. ๋ณธ๋ก ๊ทธ๋ฆผ์ผ๋ก ์ดํดํ๊ธฐ ๐ src / counterSlice.js line1: slice๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด์ createSlice๋ฅผ, ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ createAsyncThunk๋ฅผ ๊ฐ์ ธ์ต๋๋ค. createAsyncThunk์ ๋น๋๊ธฐ์์ ์ ์ฒ๋ฆฌํ๋ action creator๋ฅผ ๋ง๋ญ๋๋ค. action creator๋ ์๋์ ๊ฐ์ด 3๊ฐ์ง ์ํ๋ฅผ ๊ฐ์ต๋๋ค. action creator.p
๐ฑ Intro ์ด๋ฒ ์ฅ์์๋ react์์ react-redux๊ณผ redux-toolkit์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ด ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ค์์ ์ ์ฅํ ์ ์์ต๋๋ค. ๋, ์ํ๋ ์ปดํฌ๋ํธ์์ ์๋ณธ ๊ฐ์ ๊ฐ์ ธ์์ ์ฌ์ฉํ ์ ์๊ณ ์กฐ์ํ ์ ์๊ฒ ๋ฉ๋๋ค. ์ง์ญ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ๋ฅผ props๋ก ๊ณ์ ์ ๋ฌํด์ผํ๋ ๋ฌธ์ (props drilling)๊ฐ ์์ต๋๋ค. ์ด ๋ฌธ์ ์ ์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด redux ์ ๋๋ค. ๐ฑ ๋ณธ๋ก 1. react-redux ๐ต1-1. ํด๋ ๊ตฌ์กฐ ๐ต1-2. ๊ทธ๋ฆผ์ผ๋ก ์ดํดํ๊ธฐ redux, react-redux ์ค์นํ๊ธฐ ๐ src / store /
๐ฑ Intro ์ด๋ฒ ์ฅ์์๋ Firebase์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. Firebase๋ฅผ ์ด์ฉํด์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ณ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฑ๋กํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ React์์ DB๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํด ๋ณด๊ฒ ์ต๋๋ค. ๐ฑ Firebase 1-1. Firebase๋? ๊ตฌ๊ธ์ ๋ชจ๋ฐ์ผ ๋ฐ ์น ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ํ๋ซํผ์ ๋๋ค. ๋ฐฑ์๋ ์๋ฒ ๊ธฐ๋ฅ์ ํด๋ผ์ฐ๋ ์๋น์ค ํํ๋ก ์ ๊ณตํฉ๋๋ค. ์ธ์ฆ(Authentication), ๋ฐ์ดํฐ๋ฒ ์ด์ค(Firestore), ๋ถ์(Analytics)๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. 1-2. ํ๋ก์ ํธ ์์ฑ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ  ASP(Active Server Page), JSP(Java Server Page) ์น ์๋ฒ๊ฐ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ก ์น ๋ฌธ์๋ฅผ ์์ฑ ์ฑ๊ธ ํ์ด์ง ์ดํ๋ฆฌ์ผ์ด์ (Singl
๐ฑ Intro ๋ฆฌ์กํธ์์ Context๋ฅผ ์ฌ์ฉํด์ ์ํ๊ด๋ฆฌ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. Context๋ ์ปดํฌ๋ํธ๊ฐ ์ค์ฒฉ๋์ด ์๋ ์ํฉ์์ ์ํ ๊ฐ์ ์ ๋ฌํ๊ธฐ ํธ๋ฆฌํฉ๋๋ค. ์์๋ฅผ ์ดํด๋ณด๋ฉด์ Context ๊ฐ๋ ์ ๋ํด์ ์์ธํ ๋ณด๊ฒ ์ต๋๋ค. ๐ฑ 1. Context 1-1. Context๋? ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ ๊ฐ์ ๊ด๋ฆฌํฉ๋๋ค. ์) ์ฌ์ฉ์์ ์ธ์ด, ๋ก๊ทธ์ธ ์ํ, UI ํ ๋ง ๋ฑ ํ๊ฒฝ ์ค์ ์ฃผ์ ์ฌํญ Context์ ์ปดํฌ๋ํธ๊ฐ ์ฐ๋๋๋ฉด ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์์ฃผ ๋ณ๊ฒฝ๋๋ ์ํ์ธ ๊ฒฝ์ฐ, ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. โ Context ๋ด๋ถ์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด Context๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์์ ์ปดํฌ๋ํธ๋ค์ด ๋ฆฌ๋ ๋๋ง ๋ฉ๋๋ค. 1-2. ์ผ๋ฐ์ ์ธ ์ ์ญ ์ํ ๊ด๋ฆฌ ํ๋ฆ ์ปดํฌ๋ํธ ์ฌ๊ธฐ์ ๊ธฐ์ ํ์ํ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ์ฃผ๋ก ์ต์์ ์ปดํฌ
๐ฑ Intro ์ด๋ฒ ์ฅ์์๋ React ์ ๋ํ์ ์ธ Hook์ธ useReducer, useMemo, useCallback์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ด Hook ๋ค์ ๋ฆฌ์กํธ์์ ์ต์ ํ๋ฅผ ํ๋๋ฐ ์ฌ์ฉ๋๋ ํจ์๋ค ์ ๋๋ค. ์ด๋ป๊ฒ ํด์ ์ต์ ํ๋ฅผ ์ ์ฉํ ์ ์๋์ง ์์์ ํจ๊ป ์ดํด๋ณด๊ฒ ์ต๋๋ค. useMemo๋ ๋ณ์ ๋ฉ๋ชจ, useCallback์ ํจ์ ๋ฉ๋ชจ, React.memo๋ ์ปดํฌ๋ํธ๋ฅผ ๋ฉ๋ชจํฉ๋๋ค. ๐ฑ 1. useReducer 1-1. ํน์ง useReducer()๋ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ๊ด๋ฆฌํ ๋ ์ฌ์ฉํ๋ Hooks ์ ๋๋ค. ํน์ง ์ปดํฌ๋ํธ ์ํ ์ ๋ฐ์ดํธ ๋ก์ง์ ์ปดํฌ๋ํธ์์ ๋ถ๋ฆฌ ๊ฐ๋ฅํฉ๋๋ค. ๋ค๋ฅธ ์ปดํฌ๋ํธ์์๋ ํด๋น ๋ก์ง์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. ์ ๋๊ฒจ์ฃผ๋ ๊ฒ๋ ๋ณด๊ฒ ์ต๋๋ค. onClick, onChange์ ๊ฐ์ ์ด๋ฒคํธ๋ฅผ React์์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์ค์ต์ ํตํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ๐ฑ๋ณธ๋ก ๋ฌธ์ 1 ๋ฌธ์ 1 - ํ์ด ์ฝ๋ ๋ฒํผ ํด๋ฆญ ํ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํ state๊ฐ ๋ง๋ค์ด ์ค๋๋ค. ํด๋ฆญ์ด๋ผ๋ ๋ฒํผ์ ๋๋ ์ ๋ state๊ฐ์ด ์ฆ๊ฐํ๋๋ก ๋ง๋๋ countUp ํจ์๋ฅผ ๋ง๋ค์์ต๋๋ค. se
0. ๋ค์ด๊ฐ๋ฉฐ ์ด๋ฒ ์ฅ์์๋ 'React Router v6 ํํ ๋ฆฌ์ผ'์ ์ฐธ๊ณ ํ์ฌ ๋ฆฌ์กํธ ๋ผ์ฐํฐ 5๋ฒ์ ์์ 6๋ฒ์ ์ผ๋ก ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ์ด๋ฏธ์ง๋ก ์ดํดํด๋ณด๊ฒ ์ต๋๋ค. ๋ผ์ฐํฐ๋ ๋ฌด์์ธ์ง ์์๋ณด๊ฒ์ต๋๋ค. ํด๋ ๊ตฌ์กฐ๋ฅผ ํ์ธํ๊ณ , ๊ฐ ์ปดํฌ๋ํธ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค. 1. ๋ผ์ฐํ ์ด๋? >๋ผ์ฐํ ์ด๋ ์ถ๋ฐ์ง์์ ๋ชฉ์ ์ง๊น์ง์ ๊ฒฝ๋ก๋ฅผ ๊ฒฐ์ ํ๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ผ์ฐํ ์ ์ฌ์ฉ์๊ฐ ํ์คํฌ๋ฅผ ์ํํ๊ธฐ ์ํด ์ด๋ค ํ๋ฉด(view)์์ ๋ค๋ฅธ ํ๋ฉด์ผ๋ก ํ๋ฉด์ ์ ํํ๋ ๋ด๋น๊ฒ์ด์ ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ ์๋ฏธํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ผ์ฐํ ์ ์ฌ์ฉ์๊ฐ ์์ฒญํ URL ๋๋ ์ด๋ฒคํธ๋ฅผ ํด์ํ๊ณ ์๋ก์ด ํ์ด์ง๋ก ์ ํํ๊ธฐ ์ํด ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ์์ฒญํ๊ณ ํ์ด์ง๋ฅผ ์ ํํ๋ ์ํ ์ผ๋ จ์ ํ์๋ฅผ ๋งํฉ๋๋ค. - poiemaweb
0. Intro ์ง๊ธ๋ถํฐ ๋ฆฌ์กํธ ๊ธฐ์ด๋ฅผ ์ตํ๊ณ ๋์ ๋ง์ ์ฌ๋๋ค์ด ๋ง๋ค์ด๋ณด๋ ๊ฐ๋จํ todo ์ฑ์ ๋ง๋ค์ด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. todo ์ฑ์ ๋ง๋๋๋ฐ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ html ํ๊ทธ๋ค์ ๊ทธ๋ ค์ฃผ๋ ์์ ์ ํด๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฒ์๋ ์ต์ ํ๋ฅผ ์๊ฐํ์ง ์๊ณ ์ค๋ก์ง todo ์ฑ์ด ์ ๋์ํ๋์ง์ ์ด์ ์ ๋ง์ถ์ด์ ์งํํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฒ ์ฅ์ ๋ง์น๋ฉด, ์ฐ๋ฆฌ๋ ๋ฆฌ์กํธ์ ๊ธฐ์ด๋ฅผ ์ดํดํ๋ฉด์ ๊ฐ๋จํ todo์ฑ์ ์์ฑํ ์ ์์ต๋๋ค. 1. ํ๋ก์ ํธ ์ธํ ๋จผ์ NodeJs๊ฐ ์ค์น๋์ด ์์ด์ผํฉ๋๋ค. Node๊ฐ ์ค์น๋์ด ์์ด์ผ ์ฐ๋ฆฌ๊ฐ ๋ฆฌ์กํธ ์ฑ์ ํฐ๋ฏธ๋์์ ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. Node๋ฅผ ์ค์นํ๋ฉด npm๊ณผ npx๊ฐ ๋์์ ์ค์น ๋ฉ๋๋ค. ์๋์ ๋ช ๋ น์ด๋ npx ๋ฅผ ์ด์ฉํด์ create-react-app ๋ชจ๋์ ์คํํ๊ณ todoApp์ด๋ผ๋ ๋ฆฌ์กํธ ํ๋ก์ ํธ ํด๋๋ฅผ ์์ฑํ๊ฒ ๋ค๋ ๋ช ๋ น