You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/mo/7-bank-project/4-state-management/assignment.md

162 lines
6.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "50a7783473b39a2e0f133e271a102231",
"translation_date": "2025-10-22T22:47:38+00:00",
"source_file": "7-bank-project/4-state-management/assignment.md",
"language_code": "mo"
}
-->
# 實現「新增交易」對話框
## 概述
您的銀行應用程式現在已具備穩健的狀態管理和資料持久性,但缺少了一個真正銀行應用程式所需的重要功能:讓使用者能夠新增自己的交易。在這項作業中,您將實現一個完整的「新增交易」對話框,並與現有的狀態管理系統無縫整合。
這項作業結合了您在四個銀行課程中學到的所有內容HTML模板、表單處理、API整合以及狀態管理。
## 學習目標
完成這項作業後,您將能:
- **建立**一個方便使用者輸入資料的對話框介面
- **實現**具有鍵盤和螢幕閱讀器支援的無障礙表單設計
- **整合**新功能至現有的狀態管理系統
- **練習**API通信和錯誤處理
- **應用**現代網頁開發模式於真實世界的功能
## 指導步驟
### 步驟 1新增交易按鈕
**建立**一個「新增交易」按鈕,放置於您的儀表板頁面,讓使用者能輕鬆找到並使用。
**需求:**
- **放置**按鈕於儀表板的合理位置
- **使用**清晰且具行動導向的按鈕文字
- **設計**按鈕樣式以符合現有的UI設計
- **確保**按鈕可透過鍵盤操作
### 步驟 2對話框實現
選擇以下兩種方法之一來實現您的對話框:
**選項A獨立頁面**
- **建立**一個新的HTML模板用於交易表單
- **新增**一個新的路由至您的路由系統
- **實現**從儀表板頁面到表單頁面的導航功能
**選項B模態對話框推薦**
- **使用**JavaScript在不離開儀表板的情況下顯示/隱藏對話框
- **使用**[`hidden`屬性](https://developer.mozilla.org/docs/Web/HTML/Global_attributes/hidden)或CSS類別來實現
- **創建**流暢的使用者體驗,確保焦點管理得當
### 步驟 3無障礙設計實現
**確保**您的對話框符合[模態對話框的無障礙標準](https://developer.paciellogroup.com/blog/2018/06/the-current-state-of-modal-dialog-accessibility/)
**鍵盤導航:**
- **支援**使用Escape鍵關閉對話框
- **限制**焦點在對話框內,當對話框開啟時
- **返回**焦點至觸發按鈕,當對話框關閉時
**螢幕閱讀器支援:**
- **新增**適當的ARIA標籤和角色
- **通知**螢幕閱讀器對話框的開啟/關閉
- **提供**清晰的表單欄位標籤和錯誤訊息
### 步驟 4表單建立
**設計**一個HTML表單以收集交易資料
**必填欄位:**
- **日期**:交易發生的日期
- **描述**:交易的用途
- **金額**:交易金額(收入為正數,支出為負數)
**表單功能:**
- **驗證**使用者輸入的資料,確保正確性
- **提供**清晰的錯誤訊息,針對無效資料
- **包含**有用的佔位文字和標籤
- **樣式**與現有設計保持一致
### 步驟 5API整合
**連接**您的表單至後端API
**實現步驟:**
- **檢閱**[伺服器API規範](../api/README.md),了解正確的端點和資料格式
- **從表單輸入生成**JSON資料
- **使用適當的錯誤處理**將資料發送至API
- **向使用者顯示**成功/失敗訊息
- **妥善處理**網路錯誤
### 步驟 6狀態管理整合
**更新**您的儀表板以顯示新增的交易:
**整合需求:**
- **刷新**帳戶資料,當交易成功新增後
- **更新**儀表板顯示,無需重新載入頁面
- **確保**新增的交易立即顯示
- **保持**整個過程中的狀態一致性
## 技術規範
**API端點詳情**
請參考[伺服器API文件](../api/README.md)以了解:
- 交易資料所需的JSON格式
- HTTP方法和端點URL
- 預期的回應格式
- 錯誤回應處理
**預期結果:**
完成這項作業後,您的銀行應用程式應具備一個功能完善的「新增交易」功能,並且外觀和行為都達到專業水準:
![顯示範例「新增交易」對話框的截圖](../../../../translated_images/dialog.93bba104afeb79f12f65ebf8f521c5d64e179c40b791c49c242cf15f7e7fab15.mo.png)
## 測試您的實現
**功能測試:**
1. **確認**「新增交易」按鈕清晰可見且易於操作
2. **測試**對話框能正常開啟和關閉
3. **確認**表單驗證適用於所有必填欄位
4. **檢查**成功新增的交易能立即顯示在儀表板上
5. **確保**錯誤處理適用於無效資料和網路問題
**無障礙測試:**
1. **僅使用鍵盤**完成整個流程
2. **使用螢幕閱讀器測試**,確保正確的通知
3. **確認**焦點管理正常運作
4. **檢查**所有表單元素是否有適當的標籤
## 評估標準
| 評估標準 | 優秀 | 合格 | 需改進 |
| -------- | ---- | ---- | ------ |
| **功能性** | 新增交易功能運作流暢,使用者體驗極佳,並遵循所有課程中的最佳實踐 | 新增交易功能運作正常,但可能未遵循部分最佳實踐或存在小的可用性問題 | 新增交易功能部分運作或存在重大可用性問題 |
| **程式碼品質** | 程式碼組織良好,遵循既定模式,包含適當的錯誤處理,並與現有的狀態管理無縫整合 | 程式碼可運作,但可能存在一些組織問題或與現有程式碼基礎不一致的模式 | 程式碼結構存在重大問題或未能與現有模式良好整合 |
| **無障礙性** | 完整的鍵盤導航支援、螢幕閱讀器相容性並遵循WCAG指南焦點管理極佳 | 實現了基本的無障礙功能,但可能缺少部分鍵盤導航或螢幕閱讀器功能 | 實現的無障礙考量有限或完全缺失 |
| **使用者體驗** | 直觀、精緻的介面,提供清晰的回饋、流暢的互動,外觀專業 | 使用者體驗良好,但在回饋或視覺設計方面有小幅改進空間 | 使用者體驗差,介面混亂或缺乏使用者回饋 |
## 額外挑戰(選擇性)
完成基本需求後,您可以考慮以下增強功能:
**增強功能:**
- **新增**交易分類(例如:食品、交通、娛樂等)
- **實現**即時回饋的輸入驗證
- **創建**供高級使用者使用的鍵盤快捷鍵
- **新增**交易編輯和刪除功能
**進階整合:**
- **實現**最近新增交易的撤銷功能
- **新增**從CSV檔案批量匯入交易的功能
- **創建**交易搜尋和篩選功能
- **實現**資料匯出功能
這些選擇性功能將幫助您練習更高級的網頁開發概念,並打造更完整的銀行應用程式!
---
**免責聲明**
本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們努力確保準確性,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤釋不承擔責任。