ํฐ์คํ ๋ฆฌ ๋ทฐ
๐
Magazine SiteFirebase ๋ก CRUD๋ฅผ ๊ตฌํํ๊ณ 2์ฐจ์์๋ ๋ฐฑ์๋์์ ๋ง๋ API ๋ฅผ ๋ฐ์์ CRUD๋ฅผ ๊ตฌํ ํ์์ต๋๋ค.
4.15-4.18 => Firebase CRUD ๊ตฌํ : Magazine Site with Firebase >
4.19-4.25 => Backend API ์ฐ๊ฒฐ - AXIOS, REDUX TOOLKIT
๐
Introductionfirebase service๋ฅผ ํตํด ๊ตฌํํ๋ ๋งค๊ฑฐ์ง ์ฌ์ดํธ๋ฅผ ๋ฐฑ์๋์์ ๋ฐ์์จ API๋ก ๋ถ์ฌ๋ณด๋ ์๊ฐ์ ๊ฐ์ก์ต๋๋ค. ์ด๋ฒ ์๊ฐ์๋ axios์ Redux toolkit์ ๊ณต๋ถํ์ฌ ์ ์ฉ์์ผฐ์ต๋๋ค.
๐ ๏ธ
SKill- React, Redux Toolkit
- Promise based HTTP client : Axios
- Storage Service : AWS S3 bucket
๐ป
๊ตฌํ ๊ธฐ๋ฅ
- ํ์๊ฐ์
& ๋ก๊ทธ์ธ ํ์ด์ง
- ์ด๋ฉ์ผ ํ์ ์ฒดํฌ, ๋น๋ฐ๋ฒํธ ์ฒดํฌํ ๊ฒ
- ๋ฉ์ธ ํ์ด์ง
- ์ด๋ฉ์ผ ํ์ ์ฒดํฌ, ๋น๋ฐ๋ฒํธ ์ฒดํฌํ ๊ฒ
- ๊ฒ์๊ธ ๋ชฉ๋ก ๋
ธ์ถ
- ๋ฌดํ ์คํฌ๋กค
- ๊ฒ์๊ธ ํ๋๋ ์์ฑ์, ์์ฑ ์๊ฐ, ์ด๋ฏธ์ง ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ํ ์คํธ ๋ด์ฉ์ผ๋ก ๊ตฌ์ฑ
- ๊ฒ์๊ธ ํ๋๋ฅผ ํด๋ฆญ ์, ๊ฒ์๊ธ ์์ธ ํ์ด์ง๋ก ์ด๋
- ๊ฒ์๊ธ ์ค ์ข์์๋ฒํผ(๋ถํ์ ํํธ ๋ฒํผ)์ ๋๋ฅด๋ฉด [์ข์์]๋ฅผ +1ํ๋ค. ๋ค์ ๋๋ฅด๋ฉด ๋ถํ์ ํํธ๊ฐ ํ์ ํํธ๊ฐ ๋๊ณ ์ข์์๊ฐ -1๊ฐ ๋๋ค.
- ๊ธ ์์ฑ ํ์ด์ง
- ํ ์คํธ, ์ด๋ฏธ์ง ์ค ์ ๋ ฅ ์๋ ๊ฒ ์๋ค๋ฉด ๊ฒ์๊ธ ์์ฑ ๋ฒํผ ๋นํ์ฑํ
- ์์ฑ ์๋ฃ ์ ๋ฉ์ธ ํ์ด์ง๋ก ์ด๋
- ์ถ๊ฐํ ๋ถ๋ถ ๐ฅ๐ฃ
- infinity scroll, lazy loading, suspense ์ ์ฉ
- My Account page
- ๋ด ๊ณ์ ์ ๋ณด
- ๋ด๊ฐ ์ข์ํ Posts์ ๋ด๊ฐ ์ด Posts๋ฅผ ๋ฒํผ์ ๋ง๋ค์ด ๊ตฌ์ฑ์ฝ๋ ๋ณด๊ธฐ
- date-fns ์ ์ฉ (eg. 1 day ago...)
- date-fns๊ธฐ๋ฅ ์ ์ฉํด TimeAgo component ์์ฑ์ ์ฉ ๋ชจ์ต ๋ณด๊ธฐ
- Router ์ด๋์ scroll to top ์ ์ฉ
- ํ์ด์ง ์ ํ์ ํ์ฌ ์๋ scroll์์น๊ฐ ๊ทธ๋๋ก ๋ฐ์์ด ๋๋ ๋ฌธ์ ์ ๋ฐ๊ฒฌ
- scrollToTop component ์์ฑํด index.js ์ ์ ์ฉ์์ผ ํด๊ฒฐ
What I've Learned ๐
API ํต์
๋ฐฑ์๋์์ APIํต์ ์ axios๋ฅผ ์ฌ์ฉํ์ฌ ์งํํ์์ต๋๋ค. ๋ฐฑ์๋์์ ๋ก๊ทธ์ธํ ๋ token๋ง ์ฃผ์ด์ userinfo๋ฅผ ๋ฐ์์ค๋ api๋ก userinfo๋ฅผ ๋ก๊ทธ์ธ๊ณผ ๋์์ ์ธ์ ์คํ ๋ฆฌ์ง์ ๋ด์์ผ ํ๋ ์ํฉ์ด ์๊ฒผ์ต๋๋ค. ํ์ง๋ง ๋ก๊ทธ์ธ ํ ์๋ก๊ณ ์นจ์ ํด์ผ์ง๋ง userinfo๊ฐ ์ธ์ ์คํ ๋ฆฌ์ง์ ๋ด๊ธฐ๋ ๋ฌธ์ ์ ์ด์์๊ณ , ์ด ๋ ๋น๋๊ธฐํต์ ์ ํ๋ฆ์ ๊น๊ฒ ๊ณ ๋ฏผํด๋ณด๋ฉฐ
'๋ก๊ทธ์ธํ ๋ getuser ๋น๋๊ธฐ ํจ์๋ฅผ ์คํํ๋ฉด ๋์ง ์์๊น?'๋ผ๋ ์๊ฐ์ด๋ค์๊ณ , ๋ก๊ทธ์ธ์ผ๋ก get์์ฒญ์ ํ ๋ ํ๋ก๋ฏธ์ค๊ฐ ๋ฐํ๋๊ธฐ ์ง์ get user์ ์คํ์ํค๊ฒ๋ ๋ฐ๊พธ์์ต๋๋ค. ์ด๋ก์ ๋ก๊ทธ์ธ ์์ฒญ์ user์ ๋ณด๋ฅผ ์ธ์ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๊ณ ๋ฆฌ๋์ค user info state๋ ์ ๋ฐ์ดํธํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
Redux toolkit
์ค์ ํ๋ก์ ํธ๋ฅผ ๋๋นํด Redux toolkit์ผ๋ก ์๋ก ์งํํด ๋ณด์์ต๋๋ค. ๋ฆฌ๋์ค๋ ์์ ํ ์ดํดํ์ง ๋ชปํ ์ํฉ์์ ์ ์ฉ์ํค๋ ค๋ค๋ณด๋ ์ฌ๋ฌ ๋๊ด์ด ์์์ต๋๋ค. ์ค์ ํ๋ก์ ํธ๋ฅผ ๋๋นํด ์ํํ๋ฆ์ ๋ํด ๋ ๊ณต๋ถํ ํ์๊ฐ ๋๊ปด์ก๋ ์ฃผ์ฐจ์์ต๋๋ค.
๊ณผ์ ์ด์ธ์ ํ ๊ฒ๋ค
My page๋ฅผ ๋ง๋ค๊ณ ์ข์์ํ ํฌ์คํธ์, ์์ฑํ ํฌ์คํธ๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ ธ์ฌ์ง ๊ณ ๋ฏผํ๋ ๊ณผ์ ์ด ์ฌ๋ฐ๊ฒ ๋๊ปด์ก์ต๋๋ค. ๋จ์ ๋ฐฐ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์์จ ๊ฒ ๋ฟ์ด์์ง๋ง, ์๊ณ ๋ฆฌ์ฆ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ณต๋ถํ์ง ์์๋ค๋ฉด ์์ฉํ์ง ๋ชปํ์ ๊ฒ์ด๋ผ ์๊ฐ์ด ๋ค์๋ ๊ฒฝํ์ด์์ต๋๋ค.
๊ธฐ์กด์๋ ์๊ฐ์ ์์ฑํ ์๊ฐ์ ์ง๊ด์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์ด์ง๊ฐ์ด ๋๊ปด์ ธ์ ํฌ์คํธ ํ์ง ์ผ๋ง๋ ์ง๋ฌ๋์ง ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ด ์๋ dns fns ๋ฅผ ์ค์นํ๊ณ ์ ์ฉํด๋ณด์์ต๋๋ค.
'Frontend > ToyProject' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React/ Vite] ๊ฐ๋ฐ์ฉ์ด ์ฌ์ ๋ง๋ค๊ธฐ (0) | 2022.04.19 |
---|---|
[ToyProject] ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ฑฐ์ค๋ฆ๋ ๊ณ์ฐ ๊ฒ์ ๋ง๋ค๊ธฐ (0) | 2022.03.12 |
[ToyProject] ๋ ธ๋ง๋์ฝ๋ ๋ฐ๋๋ผ js ๋ง์ง๋ง ์ฑ๋ฆฐ์ง - ์ ์ด์ ์๋ค.. (0) | 2022.02.21 |
[Toy Project] Sparkling Store webpage ๋ง๋ค๊ธฐ (0) | 2022.01.25 |
[Toy Project] Shopping List ์ผํ๋ฆฌ์คํธ ๋ง๋ค๊ธฐ (0) | 2022.01.25 |
- Total
- Today
- Yesterday
- ๋ฐฑ์ค
- html
- ํด๋ก์
- ํ๋ก๊ทธ๋๋จธ์ค
- React Query
- github
- ํญํด99
- reactquery
- python
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ฌดํ์คํฌ๋กค
- ๋ฆฌ์กํธ
- GIT
- javascript
- ๋ชจ๋๋ฅผ์ํ์ปดํจํฐ๊ณผํ
- React
- ์ค์ ํ๋ก์ ํธ
- ํ์ ์คํฌ๋ฆฝํธ
- ํ๋ก๊ทธ๋๋จธ์ค ๋ฒ ์คํธ์จ๋ฒ ์๋ฐ์คํฌ๋ฆฝํธ
- ์๋ฐ์คํฌ๋ฆฝํธ ๋น๋๊ธฐ ์ฒ๋ฆฌ
- ์๋ฐ์คํฌ๋ฆฝํธ์๊ณ ๋ฆฌ์ฆ
- ๋ฆฌ์กํธ๋ค์ดํฐ๋ธ
- ํ๋ก๊ทธ๋๋จธ์ค ์๋ฐ์คํฌ๋ฆฝํธ
- network
- ๋คํธ์ํฌ
- cs50
- ๋ชจ๋๋ฅผ ์ํ ์ปดํจํฐ ๊ณผํ
- ์๋ฐ์คํฌ๋ฆฝํธ ํด๋ก์
- css
- ์๊ณ ๋ฆฌ์ฆ์๋ฐ์คํฌ๋ฆฝํธ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |