今天主要目標是幫記帳 App 加入操作提示,讓使用者在執行動作後,可以知道功能是否成功。
除了提示功能之外,今天也一起優化了多國語言與設定頁面,將介面語言擴充成繁體中文、英文、日文與韓文。
加入操作提示,讓結果被看見
原本 App 有些功能雖然確實執行了,但使用者不一定知道,所以我加入了提示訊息。
像是...
用 State 控制提示訊息
在 React 裡,提示訊息也可以透過 State 管理:
執行功能後更新:
畫面再根據 toast 決定是否顯示:
整個概念就是:
操作 → setToast() → State 改變 → React 重新渲染 → 顯示提示
讓提示自動消失:
為了避免提示一直留在畫面上,我使用 setTimeout():
流程可以簡化成:
使用者操作 → 執行功能 → 顯示提示 → 3 秒後清除 → 提示消失
加入多國語言
這次將介面語言整理成四種:

讓語言選單跟著資料動態產生
加入日文和韓文後,我發現 Settings Page 的下拉選單還是只有中文和英文。
後來才發現,i18n.js 雖然已經有四種語言,但 是直接寫死的:
所以我改成直接從 translations 動態產生:
Object.keys(translations) 會先取得所有語言的 Key:
再透過 map() 一個一個轉成 。
其中:
key={langKey} → React 用來識別每個項目
value={langKey} → 代表這個選項的語言代碼
languageNames[langKey] || langKey → 找不到名稱時就直接顯示語言代碼
使用者選擇語言後,會透過 onChange 把結果傳回父元件:
整個流程可以簡化成:
translations → Object.keys() → map() → → onChange → 父元件更新 State
這些問題也讓我更能看懂一段程式是怎麼從「資料」一路變成「畫面」,而不是只知道它可以運作。
下面是成果:

總結: