iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0

今天主要替記帳 App 加入批次操作功能,讓使用者可以一次選取多筆資料,進行刪除或清空。

批次操作介面優化
我先調整 ExpenseList 的操作列,將「全選」放在左側,「一鍵清空」和「刪除選取」放在右側,讓整個版面更符合我的理想。
這次使用 Flexbox
https://ithelp.ithome.com.tw/upload/images/20260917/201839490gUzkvEzaN.jpg
再搭配:
https://ithelp.ithome.com.tw/upload/images/20260917/201839497Kk3MX4c6G.jpg
讓右側的按鈕群組自動靠到最右邊。
在調整這些的過程中,我更了解 space-between 和 margin-left: auto 在 Flexbox 中的實際作用,而不只是記住寫法。

實作「全選」功能
批次操作最重要的部分就是判斷目前顯示的資料是不是全部被選取。
這裡使用 every()
https://ithelp.ithome.com.tw/upload/images/20260917/20183949wF5mrZ5PkH.jpg
every() 會檢查陣列中的每一個項目是否都符合條件。
另外,我特別讓「全選」只作用在目前搜尋或篩選後的 visibleItems,也就是只顯示在版面上的物件,而不是整個記帳資料。這樣使用者搜尋某個分類後按下全選,就只會選取目前看到的項目。

重新分清楚 map、filter、every
透過 AI 出題複習陣列方法。
我原本把 every() 答成 map(),才重新了解、認識這三者的差異:

  • map() → 將資料轉換成新的陣列
  • filter() → 篩選符合條件的資料
  • every() → 判斷是否全部符合條件
    寫功能時只知道「要用陣列方法」還不夠,還要知道每個方法適合解決什麼問題。

這邊貼上成果:
https://ithelp.ithome.com.tw/upload/images/20260917/20183949Bie46h7QFS.png

總結:
今天完成了批次選取、批次刪除與一鍵清空的操作優化,也學到:

  • Flexbox 的 space-between 與 margin-left: auto
  • every()、map()、filter() 的差異
  • 搜尋/篩選後的全選邏輯
  • JSX 正確的註解寫法

上一篇
Day 15|加入每月預算:讓記帳 App 開始主動提醒
下一篇
Day 17|CSV 匯出與 Excel 整合
系列文
Vibe Coding 實戰手冊:30 天打造具備預算控管與數據視覺化的 React 記帳應用18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言