2022๋ ์ ์ฌ์ด๋ ํ๋ก์ ํธ๋ก ์ฑ์ ํ๋ ๋ง๋ค์์ต๋๋ค. ์์ฝ๊ฒ ๋ฐฐํฌ๊น์ง ์ด์ด์ง์ง ๋ชปํ์ง๋ง React Native์ Recoil์ ์ฌ์ฉํด์ ์ฒ์์ผ๋ก ์ ์ฒด ๊ฐ๋ฐ ์ฌ์ดํด์ ๊ฒฝํํด ๋ณธ ์๋ฏธ ์๋ ํ๋ก์ ํธ๋ผ ํ๊ณ ๋ฅผ ๋จ๊ฒจ๋ณด๋ ค๊ณ ํฉ๋๋ค.
1. ํ๋ก์ ํธ ๊ฐ์: ์์ ๋ชฉํ ๋ฌ์ฑ ์ฑ, ์์ฌ์น๊ตฌ
์์ฌ์ผ์ผ์ ๋ฐฉ์งํ๋ ์์ ๋ชฉํ ๋ฌ์ฑ ์ฑ์ด์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๋ชฉํ๋ฅผ ์ค์ ํ๋ฉด ์น๊ตฌ๋ค๊ณผ ์งํ ์ํฉ์ ๊ณต์ ํ๊ณ ์๋ก ๋๊ธฐ๋ฅผ ๋ถ์ฌํ๋ ์๋น์ค์์ต๋๋ค. ๊ธฐํ, ๋์์ธ, ๊ฐ๋ฐ ๊ทธ๋ฆฌ๊ณ ์คํ ์ด ์ฌ์ฌ ์ ์ถ๊น์ง 4์ธ ํ์์ ํ๋ก ํธ์๋ ๋ฆฌ๋๋ก ๊ฐ๋ฐ์ ์งํํ์ต๋๋ค.
ํต์ฌ ๊ธฐ๋ฅ: ๋ชฉํ ์์ฑ/๊ด๋ฆฌ, ์ฌ์ง ์ธ์ฆ, ์น๊ตฌ ๊ทธ๋ฃน, ํผ๋๋ฐฑ
๋ชฉํ: iOS์ Android ๋ ๋ง์ผ์ ๋์ ์ถ์ ๊ฐ๋ฅํ ์ฑ์ ๋ง๋ค์ด๋ณด๋ ๊ฒ.
2. ๊ธฐ์ ์คํ ๊ฒฐ์ ๊ณผ ๊ทธ ์ด์
์์ฐ์ฑ๊ณผ ์์ ์ฑ์ ๋ชจ๋ ์ก๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ๊ธฐ์ ์คํ์ ๊ฒฐ์ ํ์ต๋๋ค.
React Native & TypeScript
IOS์ Android๋ฅผ ๋ชจ๋ ์ปค๋ฒํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํฌ๋ก์คํ๋ซํผ์ธ React Native๋ ๋น์ฐํ ์ ํ์ด์์ต๋๋ค. ํ๋์ TypeScript ์ฝ๋ ๋ฒ ์ด์ค๋ก ๋ ํ๋ซํผ์ ๋์ํ ์ ์๋ค๋ ์ ์ด ๊ฐ์ฅ ํฐ ๋งค๋ ฅ์ด์์ด์.
์ฌ๊ธฐ์ TypeScript๋ฅผ ์กฐํฉํ ์ด์ ๋ ๋ช ํํฉ๋๋ค. JS๋ก๋ง ์์ ํ ๋ ํํ ๊ฒช๋ ํ์ ๊ด๋ จ ๋ฒ๊ทธ๋ฅผ ์ก๋ ์๊ฐ์ ์๋ ์ ์์๊ณ , VSCode์ ์๋์์ฑ ์ง์ ๋๋ถ์ ๊ฐ๋ฐ ๊ฒฝํ๋ ํจ์ฌ ์พ์ ํ์ต๋๋ค. ํนํ API ์๋ต ๊ฐ์ด๋ ์ปดํฌ๋ํธ Props์ ํ์ ์ ๋ช ์์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ด ์ฝ๋์ ์์ ์ฑ์ด ํฌ๊ฒ ์ฌ๋ผ๊ฐ์ต๋๋ค.
์ํ ๊ด๋ฆฌ: Redux ๋์ Recoil
์ํ ๊ด๋ฆฌ ํด๋ก๋ Recoil์ ์ ํํ์ต๋๋ค. ๋น์ Redux๊ฐ ๊ฑฐ์ ํ์ค์ด์์ง๋ง, ํน์ ์ ๋ณด์ผ๋ฌํ๋ ์ดํธ(Actions, Reducers, Dispatch ๋ฑ)์ ๋ณต์กํ ๋ฐ์ดํฐ ํ๋ฆ์ด ํด๋น ํ๋ก์ ํธ์๋ ๊ณผํ๋ค๊ณ ํ๋จํ์ต๋๋ค. Recoil์ atom ๊ธฐ๋ฐ์ผ๋ก ์ํ๋ฅผ ์ง๊ด์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ณ , React hooks์ ์์ฐ์ค๋ฝ๊ฒ ํตํฉ๋์ด ์ฝ๊ฒ ๋ฐฐ์ธ ์ ์์์ต๋๋ค. ํ์ํ ์ปดํฌ๋ํธ์์ useRecoilState ํ ์ ์ฌ์ฉํด useState์ฒ๋ผ ์ํ๋ฅผ ๊ฐ์ ธ์ ์ธ ์ ์๋ค๋ ์ ์ด ๋งค์ฐ ํธ๋ฆฌํ์ต๋๋ค.
Styling: Styled-Components
Styled-Components๋ฅผ ์ฌ์ฉํด ์ปดํฌ๋ํธ ๋จ์๋ก ์คํ์ผ์ ๊ด๋ฆฌํ์ต๋๋ค. CSS ํด๋์ค๋ช ์ด ๊ฒน์น๋ ๋ฌธ์ ๋ฅผ ์ ๊ฒฝ ์ธ ํ์๋ ์๊ณ , props๋ฅผ ํ์ฉํด ๋์ ์ธ ์คํ์ผ๋ง์ ๊ตฌํํ๊ธฐ๋ ํธํ์ต๋๋ค. ์คํ์ผ ๋ก์ง์ด ์ปดํฌ๋ํธ ํ์ผ ๋ด์ ํจ๊ป ์์ผ๋ ์ฝ๋์ ์์ง๋๋ ๋์์ก์ต๋๋ค.
3. ์ฃผ์ ์ฝ๋ ๊ตฌ์กฐ์ ์ค๊ณ ์๋
ํ๋ก์ ํธ์ ์ ์ง๋ณด์์ฑ์ ๋์ด๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ค๊ณ ์์น์ ์ธ์ ์ต๋๋ค.
API ๋ ์ด์ด ๋ถ๋ฆฌ
Axios๋ฅผ ์ฌ์ฉํ API ํธ์ถ ํจ์๋ค์ src/apis ๋๋ ํ ๋ฆฌ์ ๋ชจ์ ๊ด๋ฆฌํ์ต๋๋ค.
์ด๋ ๊ฒ API ๋ ์ด์ด๋ฅผ ๋ถ๋ฆฌํด๋๋ UI ์ปดํฌ๋ํธ๋ ๋ฐ์ดํฐ fetching ๋ก์ง์ ๋ํด ์ ๊ฒฝ ์ธ ํ์ ์์ด ๋ทฐ ๋ ๋๋ง์๋ง ์ง์คํ ์ ์์์ต๋๋ค. ํฅํ ๋ฐฑ์๋ API ๋ช ์ธ๊ฐ ๋ฐ๋๋๋ผ๋ ์ด ๋๋ ํ ๋ฆฌ๋ง ์์ ํ๋ฉด ๋๋ ํจ์ฌ ํจ์จ์ ์ด์์ต๋๋ค.
์ปค์คํ ํ ์ ํตํ ๋ก์ง ์ฌ์ฌ์ฉ
์ธ์ฆ์ฒ๋ผ ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ก์ง์ useAuth ๊ฐ์ ์ปค์คํ ํ ์ผ๋ก ๋ฝ์๋์ต๋๋ค. ์ปค์คํ ํ ๋ด๋ถ์์ AsyncStorage ํ ํฐ ํ์ธ, Recoil ์ํ ์ ๋ฐ์ดํธ, API ํธ์ถ ๋ฑ์ ๋ชจ๋ ์ฒ๋ฆฌํ๋๋ก ํ์ต๋๋ค. ๋๋ถ์ ์ฝ๋ ์ค๋ณต์ด ์ค๊ณ , ๋น์ฆ๋์ค ๋ก์ง์ ํ ๊ณณ์์ ๊ด๋ฆฌํ ์ ์์ด ์ ์ง๋ณด์์ฑ์ด ์ข์์ก์ต๋๋ค.
4. ํ๊ณ : ๋ฐฐ์ด ๊ฒ๊ณผ ์์ฌ์ด ์
๋ฐฐ์ด ์
์ฑ ๊ฐ๋ฐ A to Z ๊ฒฝํ: React Native๋ก ๊ธฐํ๋ถํฐ ์คํ ์ด ์ฌ์ฌ๊น์ง ์ ์ฒด ์ฌ์ดํด์ ์ง์ ๊ฒฝํํ ๊ฒ ๊ฐ์ฅ ํฐ ์ํ์ ๋๋ค. ์ํ ๊ด๋ฆฌ, API ์ฐ๋, ๋ค์ดํฐ๋ธ ๊ธฐ๋ฅ ํธ๋ค๋ง ๋ฑ ์ง์ ๋ถ๋ชํ๋ณด๋ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ ์ ์์์ต๋๋ค.
ํด๋ฆฐ ์ฝ๋์ ์ค์์ฑ: API ๋ ์ด์ด๋ฅผ ๋ถ๋ฆฌํ๊ณ , ์ปค์คํ ํ ์ผ๋ก ๋ก์ง์ ๋ชจ๋ํํ๋ ๋ฑ์ ๋ ธ๋ ฅ์ด ๋์ค์ ์ผ๋ง๋ ํฐ ๋์์ด ๋๋์ง ์ฒด๊ฐํ์ต๋๋ค.
์์ฌ์ด ์
๋ฐฐํฌ ์คํจ: ๊ธฐ์ ์ ์ธ ์์ฑ๋์ ๋ณ๊ฐ๋ก, ์ถ์ ํ ์๋น์ค๋ฅผ ๊พธ์คํ ์ด์ํ๊ธฐ ์ํด์ ํ์ด ํ์์ ์ด๋ผ๋ ํ์ค์ ์ธ ๊ตํ์ ์ป์์ต๋๋ค. ํ ๋น๋ฉ์ ์คํจํ์ฌ ๊ฒฐ๊ตญ ๋ฐฐํฌ๋ฅผ ์ค๋จํด์ผ ํ๋ ์ ์ด ๊ฐ์ฅ ์์ฝ์ต๋๋ค.
ํ ์คํธ ์ฝ๋์ ๋ถ์ฌ: ๊ฐ๋ฐ ์๋์ ์น์คํ๋๋ผ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ์ง ๋ชปํ์ต๋๋ค. ๋ง์ฝ ํ๋ก์ ํธ๊ฐ ๋ ์ปค์ก๋ค๋ฉด ํ ์คํธ ์ฝ๋์ ๋ถ์ฌ๊ฐ ๋ฐ๋ชฉ์ ์ก์์ ๊ฑฐ๋ ์๊ฐ์ด ๋ญ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์์ฌ์น๊ตฌ๋ ์ ๊ฐ์ธ์ ์ธ ์ฑ์ฅ์ ๋ฐํ์ด ๋์ด์ค ํ๋ก์ ํธ์์ต๋๋ค. ์ด ๊ฒฝํ์ ๋ฐํ์ผ๋ก ๋ค์ ์คํ ์ ๋ฐ์๋๊ฐ ์ ์์์ต๋๋ค.