iT邦幫忙

2026 iThome 鐵人賽

DAY 19
0

今天主要是讓使用者在新增他國的幣別時,可以自動轉換讓使用者可以更方便了解自己的支出與收入。

讓記帳 App 支援多種幣別
我希望使用者不只能記錄台幣,也可以輸入美元、日圓、歐元、英鎊、韓元等外幣。

主要功能有:

  • 輸入外幣金額
  • 自動取得最新匯率
  • 即時計算折合台幣
  • 原本的統計與圖表仍然使用台幣計算
  • 保留原始外幣金額,方便之後顯示與匯出

除此之外也複習了 API 的基本概念,App 可以向外部服務發送請求,取得資料後再拿回來使用。
用 API 取得最新匯率
這次使用 fetch() 向匯率 API 發送請求:
https://ithelp.ithome.com.tw/upload/images/20260920/20183949iSL5yDt6Ln.jpg

因為網路或 API 都可能發生問題,以防萬一我還是加入了預設匯率作為備用:
https://ithelp.ithome.com.tw/upload/images/20260920/20183949thlDBpEkoV.jpg

如果 API 無法取得資料,就回傳 DEFAULT_RATES:
https://ithelp.ithome.com.tw/upload/images/20260920/20183949bRzzTy1nUB.jpg
這樣即使 API 暫時無法使用,也不會讓整個 App當掉。

頁面開啟時自動取得匯率
我在 React 裡使用 useEffect,讓 App 第一次載入時自動取得匯率:
https://ithelp.ithome.com.tw/upload/images/20260920/20183949m1kJYDJW98.jpg
這裡的 [] 代表這個 Effect 不需要因為其他 State 改變而一直重新抓取資料。

輸入外幣時即時顯示台幣
在記帳表單中,如果使用者選擇的不是台幣而是其他國家的貨幣,就會顯示目前金額大約折合多少台幣:
https://ithelp.ithome.com.tw/upload/images/20260920/201839495xP95HUPLP.jpg
因為這次 API 的匯率是「1 TWD 可以換多少外幣」,所以換算台幣時是:
https://ithelp.ithome.com.tw/upload/images/20260920/20183949hiz0rwwvDY.jpg

原始外幣和台幣分開儲存
這裡我沒有把原本的 amount 改成外幣金額,而是保留原本的 amount 作為台幣金額,讓使用者可以更好的知道自己的支出/收入。

新增資料時:
https://ithelp.ithome.com.tw/upload/images/20260920/20183949j8ZH0IbfRs.jpg

這樣就可以同時保留:

  • originalAmount → 使用者原本輸入的金額
  • originalCurrency → 原本使用的幣別
  • amount → 換算後的台幣金額
    這種做法也讓原本的圓餅圖、長條圖和每月預算功能不用全部重新修改,它們仍然可以直接使用 amount 做台幣統計。

這邊貼上今天的成果:
https://ithelp.ithome.com.tw/upload/images/20260920/2018394907QA1rpxlv.jpg
https://ithelp.ithome.com.tw/upload/images/20260920/20183949CkigFzY7Wq.jpg

總結:
今天完成了記帳 App 的多幣別與匯率換算功能,也學到:

  • fetch()、async / await API 串接
  • API 發生問題時的 Fallback 備援
  • useEffect 載入外部資料
  • 外幣換算台幣的計算方式
  • 原始金額與統計金額分開儲存
    今天算是一大挑戰,因為我不只是處理自己程式裡的資料,還連結了外部 API,與其互動互動。

上一篇
Day 18|加入暗黑模式
下一篇
Day 20|RWD 響應式設計:讓記帳 App 在手機上也不爆版
系列文
Vibe Coding 實戰手冊:30 天打造具備預算控管與數據視覺化的 React 記帳應用21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言