Vue3+ts实现todo

167 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

创建的Vue3项目目录src下有以下几个文件,默认assets为静态资源,components为拆分出来的组件,hooks为拆分出来的行为功能封装函数,store文件就是vuex状态管理的资源,typings里用来使用typescript约定数据的类型,暴露出去。

先确定数据类型,有一个todo是一个列表,列表就是Array类型的,所以我们定义一个数组类型给vuex中的state仓库使用,数组中的数据就是todo对象了,为了方便循环区分,定义一个唯一的属性id:简单设置值为当前时间戳,再一个属性是内容content:内容为string类型,再有todo的状态,枚举类型设置为1.计划做、2.正在做、3.已完成三个状态,将枚举类型,list 和 list中的todo对象暴露出去。定义完之后设置vuex的状态,state中暴露出去list,类型为todo对象的数组,actions,mutations需要写函数,actions定义行为,在actions中调用的函数通过mutations来更改state仓库中的数据,vuex定义我们已经很清楚了,mutation的意义就是日志记录修改state的事件,actions行为想要修改state中的值需要通过mutation记录一下,而且actions是可以异步调用的,这也是和mutation不同的,为什么可以异步呢,个人理解简单来说就是套一层,没有什么是套一层解决不了的,如果解决不了就再套一层。行为的名字也需要定义一下,使用常量const定义就好了,个人认为是方便修改定义,只需要在定义的文件中修改字段就可以了,全局都可以知道。 hooks中写用户使用时的具体操作,

  1. 通过输入添加一条待办 //调用hooks添加待办 传入todo对象,hooks调用vuex的修改数据的同时将变化的list存储到本地
  2. 删除一条待办 //调用hooks删除 传入id,hooks调用vuex修改数据的同时存储到本地
  3. 将待办列表取出来 //重新进入页面从localstorage获取list
  4. 完成一条待办 //将正在做和待做的设为完成状态
  5. 将待办设置为正在做、将正在做设置为待办 //修改当前todo的状态属性