今天開始把記帳 App 的 CRUD 功能補完整,前面已經完成新增、讀取、刪除,這次則是加入最後的 編輯/更新功能(Update) 功能。
這次主要的流程是:
點擊編輯 → 資料帶入表單 → 修改內容 → 送出 → 更新資料

這次新增了 editingId 來判斷目前表單的狀態:
editingId === null
→ 代表目前是新增模式
editingId 有資料
→ 代表目前正在編輯某一筆資料
當點擊每筆資料旁邊的「編輯」後,會執行 handleEdit(item):
將原本的 name、amount、category、type、date 帶回表單。
將這筆資料的 id 存進 editingId。
原本的新增表單就可以直接拿來修改資料。
這其中我覺得最重要的是學會用map()更新指定資料:
送出表單時,如果現在是編輯模式,就使用 .map() 處理原本的資料陣列。
.map() 會逐一檢查陣列中的資料。
item.id === editingId
→ 找到正在編輯的那一筆。
符合 → 更新新的內容。
不符合 → 保留原本的資料。
.map() 不只是拿來處理畫面,也可以用來更新陣列中的特定資料。
另外也加入了「取消」功能:
清空目前表單內容。
將 editingId 設回 null。
回到新增模式。
前幾天其實已經接觸過一些陣列方法,我們會發現它們各自有不同用途:
map() → 修改/轉換資料,這次用來更新記帳紀錄
filter() → 篩選資料,之前用來刪除指定的記帳項目
reduce() → 將資料累加,之前用來計算記帳總金額
所以這幾個方法雖然寫法很像,但實際用途不大不同。
在最後我覺得可以請AI出題目,來看看我是否有真正的掌握今天的重點。


