简单任务清单(TodoList)
1、功能介绍
分三部分:头部添加事项;内容区域显示事项并操作事项;尾部统计事项完成情况以及处理事项功能
讯享网
2、功能展示
3、功能亮点
(1)computed计算属性
讯享网 computed: {
//计算已勾选事项数量 completeSize() {
return this.todo.reduce((preTotal, item) => preTotal + (item.complete ? 1 : 0), 0) }, //是否全选 isAllSelected: {
get() {
return this.todo.length === this.completeSize && this.todo.length }, //点击全选则所有事项都被勾选的事件 set(check) {
this.selectAllItems(check) } } }
(2)获取浏览器数据库数据并实时保存,判断localStorege中所取数据为空时,就取空数组字符串形式,因为外部有json格式的转化
data() {
return {
//事项列表从浏览器数据库中获取 todoList: JSON.parse(window.localStorage.getItem("todo_ist") || '[]') } },
(3) 实时保存数据到浏览器中(以json格式保存数据)
讯享网 watch:{
todoList: {
deep: true, handler(newVal) {
window.localStorage.setItem("todo_ist", JSON.stringify(newVal)) } }
(4)数组方法的使用
reduce 定义和用法
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
语法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数解释
total:必需;计算结束后的返回值
currentValue: 必需;当前元素
currentIndex: 可选;当前元素的索引
arr: 可选;当前元素所属的数组对象

举例
preTotal即为最终要计算出的数值,当数组内每个对象的complete为true时,preTotal加1,最终计算得出整个事项列表中已完成的数量
讯享网completeSize() {
return this.todo.reduce((preTotal, item) => preTotal + (item.complete ? 1 : 0), 0) },
4、源代码
https://github.com/Demo996/TodoList.git
5、总结
项目虽小,但是整体写下来还是有收获的,例如pros传数据的写法从简到复杂可有有三四种;props可以传Function类型;以及数组函数的使用;计算属性的理解。不积跬步无以至千里,不积小流无以成江海。不断总结才能真正进步。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/16528.html