์ํฐ๋ ํ๋ฆฌ์จ๋ณด๋ฉ ์ธํด์ญ์์ 4์ฃผ์ฐจ ๊ณผ์ ๋ก API ์๋ฒ์ ํต์ ํด์ ์๋ํ๋ ๋๊ธ ํ๋ก์ ํธ๋ฅผ Redux๋ฅผ ํตํด ๊ตฌํํ์ต๋๋ค.
๋ฐฐํฌ ์ฌ์ดํธ์ ์ ์ํ๊ธฐ ์ ์ ๋ฐ๋์ API ์๋ฒ๋ฅผ ์คํํด ์ฃผ์ธ์
๐ ๋ฐฐํฌ ๋งํฌ
-
๊ตฌํ ์ฌํญ
- ๋๊ธ ๋ถ๋ฌ์ค๊ธฐ, ์์ฑ, ์์ , ์ญ์ ๊ฐ ๋์ํ๋๋ก ๊ธฐ๋ฅ ๊ตฌํ
- ํ์ด์ง๋ค์ด์
- ๋๊ธ ์์ฑ, ์์ , ์ญ์ ํ ๋์
- ๋๊ธ ์์ฑํ๊ณ ๋ ๋ค: ๋ค๋ฅธ ํ์ด์ง์ ์์นํ๊ณ ์์๋๋ผ๋ 1ํ์ด์ง๋ก ์ด๋, ์ ๋ ฅ ํผ ์ด๊ธฐํ
- ๋๊ธ ์์ ํ๊ณ ๋ ๋ค: ํ์ฌ ๋ณด๊ณ ์๋ ํ์ด์ง ์ ์ง, ์ ๋ ฅ ํผ ์ด๊ธฐํ
- ์ญ์ ํ๊ณ ๋ ๋ค: 1ํ์ด์ง๋ก ์ด๋
-
๊ตฌํ ์กฐ๊ฑด
- Redux ํ๊ฒฝ์ค์ ์ ์์ ๋กญ๊ฒ ์งํ
- Redux-saga or Redux-thunk ์์ ๋กญ๊ฒ ์ ํ ๊ฐ๋ฅ
- ๋ฏธ๋ค์จ์ด ์ฌ์ฉ์ํ๋ ๊ฒ๋ ๊ฐ๋ฅ
- Redux logger, Redux-Devtools ์ค์ ํ์
- Redux๋ฅผ ์ด์ฉํ ๋น๋๊ธฐ ์ฒ๋ฆฌ ํ์
- Redux ํ๊ฒฝ์ค์ ์ ์์ ๋กญ๊ฒ ์งํ
-
๊ฐ๋ฐ ์กฐ๊ฑด ๋ฐ ํ๊ฒฝ
- ์ธ์ด : JavaScript / TypeScript
- ํ์ ๊ธฐ์ : React, Redux, Redux-Logger, Redux-Devtools
- ์ ํ ๊ธฐ์ :
- Redux ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Toolkit, middleware ๋ฑ)
- ์คํ์ผ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(styled-components, emotion, UI kit ๋ฑ)
- HTTP Client(axios ๋ฑ)
- ์์ ๊ธฐ์ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธ ์ฌ์ฉ ๋ถ๊ฐ
-
redux-toolkit์ ๋ด์ฅ๋์ด ์๋ thunk api๋ฅผ ์ฌ์ฉํ์ฌ redux์์ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋๋ก ๊ตฌํํ์ต๋๋ค.
-
axios๋ฅผ ๊ฐ์ผ HttpClient ํด๋์ค๋ฅผ ์์ฑํ๊ณ , HttpClient๋ฅผ ์ฃผ์ ๋ฐ์ ํต์ ๊ธฐ๋ฅ์ ์ถ์ํํ repository ํด๋์ค๋ฅผ ์์ฑํ์ต๋๋ค. action์ payload๋ก repository๋ฅผ ๊ฐ์ด ๋ฐ์ redux์์๋ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋ ์ง, ๋๋น๋ฅผ ์ฌ์ฉํ๋์ง ๋ชจ๋ฅผ ์ ์๋๋ก ์์กด์ฑ์ ๋ถ๋ฆฌํ์ต๋๋ค.
redux-comment/src/commons/redux/commentReducer.ts
Lines 50 to 62 in 22b7b47
redux-comment/src/commons/types/module.types.ts
Lines 10 to 17 in 22b7b47
- ์๋๋ก์ด๋์์ ์ฃผ๋ก ์ฌ์ฉํ๋ repository ํจํด์ ํ๋ก์ ํธ์ ์ ์ฉํ๋๋ฐ ์ง์คํ์ฌ ๊ตฌํํ์ต๋๋ค.
- redux ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ repository ํจํด์ ์ ๋ชฉ์ํค๋๋ฐ ์ด๋ ค์์ด ์์์ต๋๋ค. redux์ reducer๋ ์์ ํจ์์ด๊ณ repository๋ ํด๋์ค ํํ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ป๊ฒ reducer์์ repository๋ฅผ ์ฌ์ฉํ ์ ์์๊น? ํ๋๊ฒ ์ ์ผ ํฐ ๊ณ ๋ฏผ์ด์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ธฐ์กด์ ์์กด์ฑ ์ฃผ์ ์ ์ด๋ป๊ฒ ํ๋๊ฐ?๋ฅผ ๋ค์ ์๊ฐํด ๋ณด๊ฒ ๋์๊ณ , ๊ธฐ์กด์ ํ๋ ๋ฐฉ๋ฒ๋ ์์ฑ์ ๋ฉ์๋๋ผ๋ ํจ์๋ฅผ ํตํด์ ์ฃผ์ ํ๋ค๋ ์ฌ์ค์ ๊นจ๋ซ๊ณ thunk action์ payload๋ก repository๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
- ๊ธฐ์กด์ ์๋๋ก์ด๋์์ ๊ฐ์ฒด ์งํฅ์ ํ๋ฉด์ ํ์ ๋ฐํ๋ ์ฌ๊ณ ๋ฅผ ๊นจ๋ ์๊ฐ์ด ๋์์ต๋๋ค. ํด๋์ค์ธ๊ฐ ํจ์์ธ๊ฐ๊ฐ ์ค์ํ ๊ฒ์ด ์๋๋ผ ๊ธฐ์กด์ ๋์ํ๋ ๊ฒ๋ค์ด ์ด๋ค ๋ฐฉ์์ผ๋ก ๋์๊ฐ๋์ง ํ์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ฒ์ ๊นจ๋ซ๋ ์๊ฐ์ด ๋์์ต๋๋ค.
- ํ๋ก์ ํธ๋ฅผ ํด๋ก ํฉ๋๋ค.
git clone https://github.com/hyejineee/redux-comment.git
- ํด๋ก ํ ํ๋ก์ ํธ ๋ด๋ถ๋ก ์ด๋ํฉ๋๋ค.
cd redux-comment
- ์์กด ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
yarn
- ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ๋ฅผ ์คํํฉ๋๋ค.
# api ์๋ฒ ์คํ
yarn api
# ํด๋ผ์ด์ธํธ ์คํ
yarn dev