这份代码用了本教程的:ref / computed / watch(第 4、5 章)、v-model 与 @submit.prevent(第 6 章)、
组件拆分与 props / emit(第 8、9 章)、v-for + 稳定 key(第 11 章)、组合式函数持久化(第 13 章)。
数据落在 localStorage 的 vue3-todo 键上,刷新页面还在。
上面的按钮演示的是「数据源只有一份」这件事:界面上的东西全部由 todos 数组算出来。
| 组件 | 负责什么 | 用什么通信 |
|---|---|---|
TodoApp(根) | 数据源、筛选、统计、落盘 | 持有 todos(usePersistentList) |
TodoComposer | 新输入的校验与提交 | emit('add', text) |
TodoItem | 单行:勾选、编辑态、删除 | props :todo;emit('toggle'|'remove'|'rename') |
TodoStats | 剩余数量与筛选切换 | props left/total;emit('filter', key) |