昨天 Day 4,我把任務清單加上了 勾選完成 的能力:切換 checkbox 後,任務會出現刪除線與淡色背景,狀態一目了然,一眼就懂。今天 Day 5,我再補上大家最常用,也最直覺的 刪除功能:點一下垃圾桶,指定任務就會從清單中移除。雖然看起來只是多一顆按鈕,背後其實練到的是「子元件事件上拋 → 父元件更新資料 → Vue 重新渲染」這條最重要的資料流。
所以今日目標是在每筆任務右側加入 刪除按鈕(🗑️),點擊刪除後,該任務會立刻從清單消失,與 Day 4 的勾選功能互不影響,將新增、勾選、刪除 三大功能做齊全。
改動總覽(類似 commit 訊息)
1.App.vue
a.新增 deleteTask(id),用 filter 產生「移除目標任務後」的新陣列。
b.在 <TaskList …> 綁定 @delete-task="deleteTask"。
2.TaskList.vue
a.defineEmits 加入 'delete-task'。
b.每一列任務加一顆垃圾桶按鈕,點擊時 emit('delete-task', task.id) 上拋給父層。
c.(沿用 Day 4 的完成樣式:刪除線 + 淡色背景)
子元件只負責把「意圖」用事件上拋,真正的資料修改留在父元件,畫面更新則交給 Vue 的反應式系統自動完成。
實作(只看這三段就夠了!)