待办清单:入门阶段的「最小完整应用」

这份代码用了本教程的: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)