react native,

Expense Tracking App

Dahna Dahna Follow Aug 23, 2024 ยท 2 mins read
Expense Tracking App
Share this

Expense Tracking App

๐Ÿ› ๏ธerror fix
Expo๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด React Native ํ”„๋กœ์ ํŠธ์—์„œ ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ž‘์—…์ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. expo๊ฐ€ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ณ  ํ•„์š”ํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ์ข…์†์„ฑ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ์‹คํ–‰ํ•œ ์ฑ„๋กœ ์„ค์น˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์•ผ ๋ˆ„๋ฝ๋˜์ง€ ์•Š๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.

Xcode simulator๋Š” settings-platforms์—์„œ simulator ๋ฒ„์ „์„ ์„ ํƒํ•ด์„œ ๋”ฐ๋กœ installํ•ด์ค˜์•ผ ํ•จ
1

  • ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ›„
    npm install @react-navigation/native
  • ์ถ”๊ฐ€ ์˜์กด์„ฑ ์„ค์น˜
    expo install react-native-screens react-native-safe-area-context
  • ๋„ค์ดํ‹ฐ๋ธŒ ์Šคํƒ ๋‚ด๋น„๊ฒŒ์ด์…˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    expo install @react-navigation/native-stack
  • ํƒญ(Tap) ๋‚ด๋น„๊ฒŒ์ดํ„ฐ
    npm install @react-navigation/bottom-tabs

  • stack : ํ•œ ํ™”๋ฉด์—์„œ ๋‹ค๋ฅธ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•  ๋•Œ ์ƒˆ ํ™”๋ฉด์ด ์œ„์— ์ถ”๊ฐ€๋˜๋Š” ๊ตฌ์กฐ.
    ๋’ค๋กœ๊ฐ€๊ธฐ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. LIFO(Last In, First Out)๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฉฐ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋œ ํ•ญ๋ชฉ์ด ๊ฐ€์žฅ ๋จผ์ € ์ œ๊ฑฐ๋˜๋Š” ํŠน์ง•์ด ์žˆ์Œ

  • payload : ํŠน์ • ๋™์ž‘์ด๋‚˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ

  • switch (action.type) : action.type์€ Redux๋‚˜ useReducer์™€ ๊ฐ™์€ ์ƒํƒœ ๊ด€๋ฆฌ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•œ ์•ก์…˜์˜ ์ข…๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. switch (action.type)๋Š” action.type์˜ ๊ฐ’์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

Handling User Input (Fetching & Validating User Input)

Sending HTTP Requests

2

  • ๋ชจ๋ฐ”์ผ ์•ฑ์„ ๊ตฌ์ถ• ์ค‘์ด๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ๊ตํ™˜๊ณผ ๊ด€๋ จ๋œ API๊ฐ€ ํ•„์š”

Firebase

  • ๋”๋ฏธ ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉํ•ด์„œ ์ž์ฒด ๋ฐฑ์—”๋“œ ๊ตฌ์ถ•ํ•  ํ•„์š”๊ฐ€ ์—†์Œ(ํ•˜์ง€๋งŒ Node๋‚˜ PHP๋“ฑ ๋‚˜์ค‘์— ๋‹ค๋ฅธ ๋ฐฑ์—”๋“œ์—์„œ๋„ ํ™œ์šฉ ๊ฐ€๋Šฅํ•จ)
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ๋ฐ›๊ธฐ๋งŒ ํ•˜๋ฉด ๋จ(graphAPI๋‚˜ REST API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋จ)
  • ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ›„ Realtime Database : ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์ข€ ๋” ์‰ฝ๊ณ  REST API๋ฅผ ์ œ๊ณต
  • ์šฐ๋ฆฌ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” API์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋ฉฐ Google Firebase๊ฐ€ ๋ฐฑ์—”๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์š”์ฒญ์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
  • Location setting : ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ
  • security๋Š” team mode๋กœ ์‹œ์ž‘ํ•ด์•ผ ์ธ์ฆ ์—†์ด ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    3

Axios ์„ค์น˜

  • API : ๋‘ ์‹œ์Šคํ…œ ๊ฐ„์˜ ์ค‘๊ฐœ์ž ์—ญํ•  (์˜ˆ : ์„œ๋ฒ„, ํด๋ผ์ด์–ธํŠธ)
  • Axios : HTTP ํด๋ผ์ด์–ธํŠธ (์˜ˆ : ๋ธŒ๋ผ์šฐ์ €, ์„œ๋ฒ„ ๊ฐ„์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์คŒ)
  • fetch API๋ฅผ ์‚ฌ์šฉ
  • Axios ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŽ์ด ์”€ : ํ”„๋กœ๋ฏธ์Šค ๊ธฐ๋ฐ˜์˜ HTTP ํด๋ผ์ด์–ธํŠธ๋กœ ๋ธŒ๋ผ์šฐ์ €์™€ React Native์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • npm install axios ์„ค์น˜
  • ์ฝ”๋“œ URL ๋์— ์„ธ๊ทธ๋จผํŠธ + .json
  • Firebase์—์„œ๋Š” ๋์— .json์„ ๋ถ™์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ • ๋…ธ๋“œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ค˜์•ผ ํ•จ
  • ์„ธ๊ทธ๋จผํŠธ๋Š” ๋…ธ๋“œ๋‚˜ ํด๋”๋กœ ์ „ํ™˜๋œ๋‹ค.
  • ๊ณ ์œ  ID๋Š” Firebase๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์คŒ
Dahna
Written by Dahna Follow
Hi, I am Dahna, the author of this blog!