LESSON-21 · SELF-PACED PRACTICE

元件輸入、事件與 slot 契約

把「元件輸入、事件與 slot 契約」拆成 4 個可獨立完成、可重設、可驗證的自主學習 module。

4個獨立主題3個練習階段1個整合挑戰
看見缺口 → 修改一小段 → 重新載入驗收

每一個 topic 都有自己的檔案、Starter、Checkpoint、Solution 與證據清單。

先知道今天要做什麼

不要從長篇名詞開始;先從第一個可完成的小任務開始。

01

選一個 topic

從第一張卡開始,先閱讀任務情境與預期畫面。

02

修改自己的檔案

打開 Starter 的實作檔,依 Step 逐步修改,不靠按鈕代做。

03

用證據驗收

重新整理頁面,對照畫面、DOM、Computed、Console 或文件證據。

4 個獨立主題

每張卡只練一個責任;完成後再進入下一張。

01

prop type、default、required

能為 service-card 宣告必要 title 與具預設值的 price,並從元件設定與渲染結果驗證輸入契約。

要修改:files/starter/main.js

02

禁止直接修改 prop

能證明 setup 中收到的 prop 是唯讀介面,並以事件請求父層更新資料而非在子層改寫。

要修改:files/starter/index.html

03

emits 與 payload 契約

能宣告 select 事件,讓子卡片只送出 serviceId,並由父層驗證事件次數與 payload。

要修改:files/starter/main.js

04

slot

能讓卡片元件保有結構,父層以 default slot 提供內容,未提供時顯示元件 fallback。

要修改:files/starter/index.html

最後整合挑戰

把已完成的責任轉回本章完整作品,不把整合步驟冒充成單項教學。

在同一份章節作品中整合 4 個 module,排除單項通過但組合失敗的問題。

完成具明確 props、單向資料流、事件 payload 與可插入內容的服務卡元件。

第一個建議動作

如果你現在只想知道下一步,先做這件事。

開啟「prop type、default、required」:先看 files/starter/main.js 的 先讀元件 props object,不先從最終文字猜契約。,記錄目前狀態,再修改一小段。