๐ฌ์์๋ณด๊ธฐ: ์์ ๋ณด๊ธฐ
๐Trello: Trello ๋ณด๊ธฐ
Kurly ์ดํ๋ฆฌ์ผ์ด์
ํด๋ก ํ๋ก์ ํธ(Front-end)
ํ๋ก์ ํธ ์๊ฐ๐จ
- ์๋ฒฝ๋ฐฐ์ก์ผ๋ก ์ ๋ช
ํ Kurly ์ดํ๋ฆฌ์ผ์ด์
์ ํด๋ก ํ๋ก์ ํธ
๊ฐ๋ฐ ๊ธฐ๊ฐ๐
- 2020/10/16 ~ 2020/11/6(3 Weeks)
๊ตฌ์ฑ์ ๐จโ๐ป
- ํ๋ก ํธ์๋ 4๋ช
- ๋ฐฑ์๋ 2๋ช
๊ฐ๋ฐ ๋ชฉ์ ๐
- React Native์ ํ์ฉ
- React.js(functional components)๋ฅผ ํตํ ํ๋ก ํธ์๋ ๊ฐ๋ฐ
- Hooks์ ์ ์ฉ
- Redux(Thunk)๋ฅผ ํตํ ์ํ๊ด๋ฆฌ
- Stlyed Component์ ์ ์ฉ
- git์ ํตํ ํ๋ก ํธ์๋์ ๋ฐฑ์๋์ ํ์
๊ฒฝํ
์ฌ์ฉ ๊ธฐ์ & ๊ตฌํ ๊ธฐ๋ฅโ๏ธ
์ฌ์ฉ ๊ธฐ์
- React.js(Functional components)
- React Native
- Styled components
- RESTful API
- Redux-Thunk
- Git
์ฃผ์ ๊ตฌํ ๊ธฐ๋ฅ
์ง์ ๊ตฌํํ ๊ธฐ๋ฅ์ โ
, ํ์์ด ๊ตฌํํ ๊ธฐ๋ฅ์ โ ํ์
1) ๐ ํ์๊ฐ์
/ ๋ก๊ทธ์ธ ํ์ด์ง
- โModal login
- โ์ด๋ฉ์ผ ๋ฐ ํจ์ค์๋ ์์ ํ์ธ ๊ธฐ๋ฅ
- โํ์๊ฐ์
๊ธฐ๋ฅ(์ฝ๊ด ๋์ ๋ฐ ํน์ ์กฐ๊ฑด)
- โSNS ๋ก๊ทธ์ธ ๊ธฐ๋ฅ
2) ๐ ๋ฉ์ธํ์ด์ง
- โ
Horizon slide ์ํ ์ปดํฌ๋ํธ
- โ
ํน์ ์คํฌ๋กค ์์น์์ ๋์ค๋ ๋ฒํผ(ํด๋ฆญ์ ์๋จ์ด๋)
3) ๐ ๊ฒ์ํ์ด์ง
- โ
์์ฐ์ด์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ์ ๊ฒ์ ๊ธฐ๋ฅ
- โ
๊ฒ์๋จ์ด์ ์ ๋ฌด์ ๋ฐ๋ผ ์ทจ์๋ฒํผ์ ์ถํ
3) ๐ ์ํํ์ด์ง
- โ
์ํ ์นดํ
๊ณ ๋ฆฌ์ ๋ฐ๋ฅธ ์ปดํฌ๋ํธ์ ์ฌํ์ฉ
- โ
๋ฐฐ์ก์ข
๋ฅ, ์ ํ์ ์ํ์ ๋ฐ๋ฅธ filter ๊ตฌํ
- โ
์ํ์ ํ ์ธ ์ ๋ฌด์ ๋ฐ๋ฅธ ์กฐ๊ฑด๋ถ ๋ ๋๋ง
- โ ๋ํ
์ผ ํ์ด์ง ๋ด์ ๋ค๋น๊ฒ์ด์
- โ ํ๊ธฐ ์์ฑ ๊ธฐ๋ฅ
4) ๐ ์ฅ๋ฐ๊ตฌ๋
- โ login ๊ณ์ ์ Auth ๊ธฐ๋ฅ
- โ ํน์ ์์ดํ
์ ์ฅ๋ฐ๊ตฌ๋ ์ถ๊ฐ ๋ฐ ์ญ์
- โ ์ํ ๋ด ์ต์
์ ์กด์ฌ์ ๋ฐ๋ฅธ ์กฐ๊ฑด๋ถ ๋ ๋๋ง
#code review๐
โญ๏ธ ์กฐ๊ฑด๋ถ ๋ ๋๋ง
: React์์๋, ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์ ์ํ๋ ๋์์ ์บก์ํ ํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋์, ์ดํ๋ฆฌ์ผ์ด์
์ ์ํ์ ๋ฐ๋ผ ์ปดํฌ๋ํธ์ ์ผ๋ถ๋ง ๋ ๋๋ง ํ ์ ์๋ค!
์ด์ ๋ ๋น์ฐํ๊ฒ ํ ์ค ์์์ผ ํ๋ค
์ํ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ฑํ๋ฉด์, ๋ฐฑ์๋์๊ฒ ์ ๋ฌ๋ฐ๊ธฐ๋ก ํ ๋ฐ์ดํฐ๋ฅผ ์ดํด๋ณด์
- ์ํ์ ํ ์ธ์ ์ ๋ฌด์ ๋ฐ๋ผ์ Price๊ฐ ๋ณํ๊ฑฐ๋, ํน์ ์ด๋ฏธ์ง๊ฐ ์๊ฑฐ๋ ํ๋ ํํ๋ค.
- ๋ฐ์ดํฐ๊ฐ True ์ผ ๊ฒฝ์ฐ ์ด๋ฏธ์ง uri์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๊ณ ์๋ ๊ฒฝ์ฐ์๋ null ์ฒ๋ฆฌ๋ฅผ ํตํด ๊ธฐ๋ฅ ๊ตฌํ!
- ํ
์คํธ์ ๊ฒฝ์ฐ ๋ ์ด์์์ด ๋ฐ๋๋ ๋ถ๋ถ์ด ์์๋ค.
- ๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฅผ return ํ๋ ๊ฒ ๋ฟ๋ง ์๋๋ผ ์์ฑ์๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ์๋ค.
์ด ๋ง์ styled-compnents๋ฅผ ์ด๋ค๐
- ๋ค์ด์ค๋ ๋ฐ์ดํฐ์ ๋ฐ๋ผ Text๊ฐ ๋ํ๋๋ ๋ถ๋ถ์ display ์์ฑ์ ์กฐ์ ํ๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
โญ๏ธ ์ ๋๋ฉ์ด์
ํน์ ์์น์์ ๋ํ๋๋ ๋ฒํผ
์ฌ๋ฌ ์ปดํฌ๋ํธ๋ฅผ import ํ๋ scroll์ด ์๋ page์์์ ๋ฒํผ์ ๊ตฌํํด๋ณด์!
- ํด๋น ์ปดํฌ๋ํธ์์๋ FlatList๋ฅผ ํตํด ์ฌํ์ฉ๋๋ ์ํ์ปดํฌ๋ํธ๋ฅผ ์นดํ
๊ณ ๋ฆฌ๋งํผ ๋ ๋๋ฅผ ์งํํ๋ค.
- ๊ทธ์ ๋ฐ๋ผ ํ์ด์ง์ ์คํฌ๋กค์ด ์๊ธด๋ค.
- ๋ฒํผ ์๋์ ์ํ ํจ์๋ฅผ ์์ฑํ๋ค.
- useRef๋ฅผ ์ด์ฉํด ํน์ ์ปดํฌ๋ํธ๋ฅผ ์ง๊ฒ๋ก ์ง์๋ค!
- scroll์ด๋ผ๋ state๋ฅผ ๋ถ์ฌํ๋ค. ์ต์๋จ์ ๊ธฐ์ค์ผ๋ก ํ๊ธฐ ์ํด 0์ ์ด๊ธฐ๊ฐ์ ์ค์ .
- scroll์ด ์์ง์ด๋ฉด ํด๋น ์์น์ y๊ฐ์ state์ ๋ด์๋๋๋ก ์ค์ ํ๋ค.
- ๋ฒํผ์ด ์๋ํ๋ฉด ์คํฌ๋กค์ 0์ ์์น์ ์ด๋ํ ์ ์๋ ๋ฒํผํจ์๋ ์์ฑํ๋ค!
- ๋ฒํผ์ ์์ฑํ๊ณ onPress ์ด๋ฒคํธ์ ์๋จ์ผ๋ก ์ด๋ํ๋ ํจ์๋ฅผ ์๋ํ๋๋ก ์ค์ !
- fadein ์ ๋๋ฉ์ด์
์ ์ํด์ state์ ๋ด๊ธด ๊ฐ์ด 700๋ณด๋ค ํฌ๋ฉด ์ ๋๋ฉ์ด์
์ด ๋์ํ๋๋ก ์ค์ !
- ํน์ ์์น์์ ๋ฒํผ์ด ๋ํ๋๋๋ก ํ๊ธฐ ์ํด state๋ฅผ ์ด์ฉํด์ ๋ค์ํ๋ฒ opacity๋ฅผ ์กฐ์ ํ๋ค.
์
๋ ฅ์ฐฝ์ ํฌ๊ธฐ์กฐ์ & ์ทจ์๋ฒํผ์ ์ถํ
์์ฐ์ด ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด ๊ฒ์์ฐฝ์ ๋ง๋ค์ด ๋ณด์๋ค!
- searchData์ ์ธ์๋ก input์ value๊ฐ ๋ค์ด์จ๋ค.
- ํด๋น value๋ฅผ POST๋ฅผ ํตํด ์ ๋ฌํ๊ณ , ๋ฐ์ดํฐ๋ฅผ GET ํ๋ค.
- onChageText๊ฐ ๋์์ ๊ฒฝ์ฐ input value๋ฅผ ์์ ์ค์ ํ fetchํจ์๋ก ์ ๋ฌํ๋๋ก ์ค์
- ํด๋น ๊ฐ์ searchVal์ด๋ผ๋ state์ ๋ด์์ค๋ค.
- ํด๋น ๊ฐ์ ์์ด์ฝ, input ์ปดํฌ๋ํธ, ์ทจ์๋ฒํผ์ ์์ฑ๊ฐ์ผ๋ก ์ ๋ฌ!
- ํด๋น ๊ฐ์ ๊ธธ์ด๊ฐ 0์ด์์ด๋ฉด ํน์ ์ ๋๋ฉ์ด์
์ด ๋์ํ๋๋ก ์ค์ !
- ์ทจ์๋ฒํผ์ ๋๋ฅด๋ฉด clearInput์ด๋ผ๋ ํจ์๊ฐ ์๋ํด ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ์ด๊ธฐํ ์์ผ์ฃผ๋๋ก ํ๋ค!
- ๋ฏธ๋ฆฌ ์ค์ ํด๋ touch๋ผ๋ ์์ฑ์ ํตํด input์ ๊ธธ์ด, ์ทจ์๋ฒํผ์ display๋ฅผ ์กฐ์ ํ๋๋ก ์ค์ ํ๋ค.
- ์์ฐ์ค๋ฌ์ด UI๋ฅผ ์ํ ์ ๋๋ฉ์ด์
์ ๋ค์ด๋ค!
โญ๏ธ ํํฐ๊ธฐ๋ฅ feat. Redux
์์ง๋ ์ฝ๋ฐฑํจ์๋ก ์์์ ์ํ๊ฐ์ ๋ถ๋ชจ์๊ฒ ์ฃผ๊ณ ๊ณ์๋์...? ์์ด ์ค๋ง๐
์ด๋ฒ ํ๋ก์ ํธ์์ Redux๋ฅผ ์ธ์ผ์ด ์์์ง๋ง... ์์๋ฆฌ๊ฐ ์์ง
actions
์ด๋ฒ ํ๋ก์ ํธ์์๋ ๋ฐฐ์ก์ํ์ ํํฐ๋ฅผ ๋ด๋นํ๊ธฐ์ํด GET_DEILVERY, ์ํ์ํ ํํฐ๋ฅผ ๋ด๋นํ๊ธฐ ์ํ GET_FILTER๋ฅผ ์ค์ ํ๋ค.
reducer
- action์ ๋ฐ๋ผ ๋ฆฌ๋์๋ฅผ ์ค์ ํ๋ค.
- filter์ ๋ค์ด๊ฐ๋ ๊ฐ๋ค์ ์ถํ์ POST์ ๋ค์ด๊ฐ๊ธฐ์ ์ด๊ธฐ๊ฐ์ ์ค์ ํ๋ค.
filter
- ํํฐ์ label์ด ๋ณํํ์๋ ํด๋น value๋ฅผ dispatch๋ฅผ ํตํด ์คํ ์ด์ ๋ด์์ฃผ๋ ๋ชจ์ต์ด ๋ณด์ธ๋ค.
use
- ์ํ ์ปดํฌ๋ํธ์์ useSelector๋ฅผ ํตํด filter์ ๊ฐ์ ๊ฐ์ ธ์ค๊ณ ์๋ค.
- ํด๋น ๊ฐ์ POST์ ๋ฃ์ด์ฃผ๊ณ ์๋ ๋ชจ์ต์ด๋ค.
- useEffect๋ฅผ ํตํด ํํฐ์ ๊ฐ์ด ๋ณ๋๋ ๊ฒฝ์ฐ fetch๋ฅผ ์๋กํ๋ ๋ชจ์ต๋ ๋ณผ ์ ์๋ค!
#Total reivew๐
โญ๏ธ์์ฉ์ ํญ์ด ์ ์ ๋์ด์ง๊ณ ์๋ค!
์ฌ์ค ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ ๊ณํ์ ์์๋ค. ์์ฝ๋์ ์ ๊ท ์ปค๋ฆฌํ๋ผ๋ ์๋๋ฟ๋๋ฌ ๊ทธ๋ ๋ค๋ณด๋ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ๋ฅผ ๋ฐฐ์ด์ ๋ ์์๋ค. ๊ทผ๋ฐ ์ ์ง ๋ชจ๋ฅด๊ฒ ํ ์ ์์ ๊ฒ ๊ฐ์๋ค. ์ค๋ฆฌ์๋๋ฐ์ค์์์ ๊ฒฝํ, ์์ฝ๋์์์ ๊ฒฝํ์ด ์ค์ค๋ก ์ฐพ์๋ณด๊ณ ์ ์ฉํ ์ ์์ ๊ฒ์ด๋ผ๋ ์์ ๊ฐ์ ์ค ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ํด๋๋ค.
์ฆ, ๋ ํ๋ฒ ์ฑ์ฅ์ ํ ๊ฒ์ด๋ค!๐
๐ํญ์ ์ํต์ด ์ ์ผ ์ค์ํ๋ค!
์ด๋ฒ ํ๋ก์ ํธ์์ ๊ฐ์ฅ ํฐ ๋๊ด์ผ๋ก ๋ค๊ฐ์จ ๊ฒ์ ๋ชจ๋๊ฐ ์ฒ์์ ํ๋ ๊ธฐ์ ์ ์ ๋๋ก ๋ฐฐ์๋ณด์ง๋ ์๊ณ ์ฌ์ฉํ ๊ฒ์ด์๋ค.
๋๋ฌธ์ ๋ค๋น๊ฒ์ด์
๊ตฌ์กฐ์ ๋ํด ์ ํ ๋ฌด์งํ ์ํ๋ก ํ๋ก์ ํธ๊ฐ ์งํ๋๊ณ , ๋ค๋น๊ฒ์ด์
์ด ๋งจ ๋ง์ง๋ง์ ๊ตฌํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ค.
์์ค ๋ถ๋ค์ ์์๊ฒ ์ง๋ง ์ด๋ ๊ฒ๋๋ฉด... ๊ธฐ์กด์ ๋ง๋ค์ด๋ ํ์ด์ง๋ค์ ์ด๋์ ์ํ ๋ค๋น๊ฒ์ดํฐ๋ค์ด ๋จนํต์ด ๋ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค..!(์ฐ๋ฆฌ๋ ๊ทธ๋ฌ๋ค...๐
)
๊ทธ๋๋ ๋ชจ๋๊ฐ ๊ตฌ๊ธ๋ฏธํ
์ ์ฐธ์ฌํด์ ๊ตฌ์กฐ๋ฅผ ํ๋์ฉ ๊ฐ์ด ๋ฐฐ์ฐ๊ณ ๊ฒฐ๊ตญ์๋ ๋๋ฒ๊น
์ ์ฑ๊ณตํ๋ค! ๊ทธ๋ฅผ ํตํด ํจ๊ณผ์ ์ด์ง ์๋๋ผ๋ ์ฐ๋ฆฌ ๋๋ฆ๋๋ก์ ์ปจ๋ฒค์
๊ฐ์ ํํ์ ๋ค๋น๊ฒ์ดํฐ๋ฅผ ์์ฑํ ์ ์์๋ค.
๋ํ ์ด๋ฒ ํ๋ก์ ํธ์์ ํ์๋ ๋ถ๋ชจ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๋๋ฃ์๊ฒ ํน์ props๋ค์ ๋ฐ์ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋ํ๊ณ , ๋ ํน์ props๋ฅผ ๋ค๋ฅธ ํ์ด์ง๋ฅผ ์์
ํ๋ ๋๋ฃ์๊ฒ ์ ๋ฌํด์ผ๋๋ ์๋์์น ์ค๊ฐ์ ์ปดํฌ๋ํธ ์ ์์ ๋งก์๋๋ฐ, ์๋ฌด ์๊ฐ์์ด ํผ์๋ก์ง์ ๊ตฌ์ฑํ๊ณ ๋์ค์ ์ปดํฌ๋ํธ๋ค์ ํฉ์ณค๋ค๋ฉด ์ ๋ง ํฐ์ผ์ด ๋ ๋ปํ๋ค(์ด ์ ํ๋ก์ ํธ๋ค์ ๊ฒฝํ์ด ๋ ์ด๋ฐ ์ง์ฅ์์ ๋ฏธ๋ฆฌ ๊ตฌํด์ฃผ์๋ค..๐) ์ปดํฌ๋ํธ ๋ก์ง์ ๊ตฌ์ฑํจ์ ์์ด ๋ฐ๋ก๋ฐ๋ก ์ฐ๊ด ์ปดํฌ๋ํธ ์์
์ ํ๋ ๋๋ฃ๋ค๊ณผ ์ํตํ๊ณ , key ํน์ props์ name์ ํน์ ํ๊ณ , ๋ค์ด์ค๋ ๋ฐ์ดํฐ์ ๋ํด์ ๋ฏธ๋ฆฌ ๋ฐฑ์๋์ ์ํตํ๋ ์ผ๋ จ์ ๋ชจ๋ ์ํต์ด ๋์ฑ ์์ฐ์ฑ์ ์๋ฑํ๊ฒ ์์น์์ผ ์ฃผ์๋ค.
์ฌ์ค ํ์๋ ์ด๋ฒ ํ๋ก์ ํธ์์ ๋ด๋น์ญํ์ ์ผ์ฃผ์ผ ์ ๋ ๋ฏธ๋ฆฌ ๋๋ด๋ ๊ธฐ์ผ์ ํ ํ๊ธฐ๋ ํ๋ค..โ๏ธ
๋๋ฌธ์ ๋จ๋ ์๊ฐ์ด ์๊ฒจ ๋ค๋ฅธ ํ์๋ค์ ์ํ๋ ๋ณด๋ฉฐ, ๋์์ค ์ ์๋ ๋ถ๋ถ์ ๊ฐ์ด ๊ณ ๋ฏผํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋๊ฐ๋ ๋ฐ์์๋ ํฐ ์ฆ๊ฑฐ์์ ๋๊ผ๋ค.
๐ผ๊ตฌ์กฐ์ ์ค์์ฑ
๋ค์ํ๋ฒ ๋๋๋ค...
์์์ ์์ ํ ๋ฐ์ ๊ฐ์ด ๊ธฐ๋ณธ์ ์ธ ๋ค๋น๊ฒ์ดํฐ์ ๊ธฐ๋ฅ์ ๋ฒํผ์ ์ ์ฉ ์ํจํ ๊ฐ์ ์์
ํ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง์ง๋ง์ ๋ง๋ค์ด์ง ๋ค๋น๊ฒ์ดํฐ์ ๋ถ์ด๋ ํ์์ผ๋ก ์์
์ ์งํํ๊ฒ ๋์๋๋ฐ, ์ตํ๋ฐ์ ๋ค์ด์ ๋ชจ๋ ๋ค๋น๊ฒ์ดํฐ๊ฐ ๊ณ ์ฅ๋๋ ๋์ฐธ์ฌ๋ฅผ ๊ฐ์ง๊ฒ ๋์๋ค.
์ผ๋จ ์คํํ๋ ๊ฒ๋ ๋ฌผ๋ก ์ค์ํ์ง๋ง.. ๋ค์ํ๋ฒ!! ๋ ํ๋ฒ!! ๋๋๋ค.. ์ถฉ๋ถํ๊ฒ ์ฌ๋ฐ๋ฅธ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์ก์๋๊ณ , ํ๋ก์ ํธ๋ฅผ ์งํํ์..!!๐ท
์ค์ค ๋ง์ผ์ปฌ๋ฆฌ๋ค..!