通过vue + vuex这2样技术实现todolist(详细教程)

这篇文章主要介绍了vue + vuex todolist实现示例代码,我觉得挺不错的,现在分享给大家,也给大家做个参考。

todolist demo

最近有空重新看了一下vuex,然后又写了一个todolist小demo,原理比较简单,主要是自己规范了一下代码的写法.

下载地址 :vue-test_jb51.rar

效果图

立即学习“前端免费学习笔记(深入)”;

通过vue + vuex这2样技术实现todolist(详细教程)

根组件

 

 

todo list demo

    import { createNamespacedHelpers } from 'vuex'import TypeFilter from './filter'import AddTodo from './addTodo'import TodoItem from './item'const { mapState, mapMutations } = createNamespacedHelpers('TodoList')export default { name: 'todo-list-demo', components: { TypeFilter, TodoItem, AddTodo }, computed: { ...mapState(['list', 'types', 'filter']) }, methods: { ...mapMutations([ 'handleAdd', 'handleRemove', 'handleToggle', 'handleUpdateFilter' ]) }}@import './style.scss';

登录后复制

过滤条件组件

 
     
  • {{item}}
  •  
export default { name: 'type-filter', props: ['types', 'filter', 'handleUpdateFilter'], methods: { filterClass(filter) { return { filter: true, active: filter === this.filter } } }}@import './style.scss';

登录后复制

添加待办组件

 export default { name: 'add-todo', props: ['handleAdd'], methods: { add(e) { const val = e.target.value.trim() if (val) { this.handleAdd({  id: new Date().getTime(),  message: val,  status: false }) e.target.value = '' } } }}@import './style.scss';

登录后复制

单个待办事项组件

 

 {{index+1}}. {{data.message}}{{dateFormat(data.id)}} Delete 

export default { name: 'todo-items', props: ['data', 'filter', 'index', 'handleRemove', 'handleToggle'], computed: { show() { return ( this.filter === 'ALL' || (this.filter === 'UNDO' && !this.data.status) || (this.filter === 'DONE' && this.data.status) ) } }, methods: { dateFormat(time) { const date = new Date(time) return `(${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()})` }, messageClass: status => ({ message: true, done: status }) }}@import './style.scss';

登录后复制

vuex部分(模块)

const state = { list: [], types: ['ALL', 'UNDO', 'DONE'], filter: 'ALL'}const mutations = { handleAdd(state, item) { state.list = [...state.list, item] }, handleRemove(state, id) { state.list = state.list.filter(obj => obj.id !== id) }, handleToggle(state, id) { state.list = state.list.map( obj => (obj.id === id ? { ...obj, status: !obj.status } : obj) ) }, handleUpdateFilter(state, filter) { state.filter = filter }}export default { namespaced: true, state, mutations}

登录后复制

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

jQuery实现的回车触发按钮事件功能示例

jQuery+Cookie实现切换皮肤功能

Angular 组件之间的交互的示例代码

以上就是通过vue + vuex这2样技术实现todolist(详细教程)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2752810.html

(0)
上一篇 2025年3月8日 06:29:27
下一篇 2025年3月4日 19:21:24

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论