国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

通過vue+vuex這2樣技術實現todolist(詳細教程)

來源:懂視網 責編:小采 時間:2020-11-27 19:43:15
文檔

通過vue+vuex這2樣技術實現todolist(詳細教程)

通過vue+vuex這2樣技術實現todolist(詳細教程):這篇文章主要介紹了vue + vuex todolist的實現示例代碼,我覺得挺不錯的,現在分享給大家,也給大家做個參考。todolist demo最近有空重新看了一下vuex,然后又寫了一個todolist小demo,原理比較簡單,主要是自己規范了一下代碼的寫法.下載地址 :vue-te
推薦度:
導讀通過vue+vuex這2樣技術實現todolist(詳細教程):這篇文章主要介紹了vue + vuex todolist的實現示例代碼,我覺得挺不錯的,現在分享給大家,也給大家做個參考。todolist demo最近有空重新看了一下vuex,然后又寫了一個todolist小demo,原理比較簡單,主要是自己規范了一下代碼的寫法.下載地址 :vue-te
這篇文章主要介紹了vue + vuex todolist的實現示例代碼,我覺得挺不錯的,現在分享給大家,也給大家做個參考。

todolist demo

最近有空重新看了一下vuex,然后又寫了一個todolist小demo,原理比較簡單,主要是自己規范了一下代碼的寫法.

下載地址 :vue-test_jb51.rar

效果圖

根組件

<template>
 <p class='container'>
 <h1 class='title'>todo list demo</h1>
 <type-filter
 :types='types'
 :filter='filter'
 :handleUpdateFilter='handleUpdateFilter'
 />
 <add-todo :handleAdd='handleAdd' />
 <todo-item
 v-for='(item,index) in list'
 :key='item.id'
 :index='index'
 :data='item'
 :filter='filter'
 :handleRemove='handleRemove'
 :handleToggle='handleToggle'
 />
 </p>
</template>

<script>
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'
 ])
 }
}
</script>

<style lang='scss' scoped>
@import './style.scss';
</style>

過濾條件組件

<template>
 <ul class='types'>
 <li
 v-for='(item,index) in types'
 :key='index + item'
 :class='filterClass(item)'
 @click='handleUpdateFilter(item)'
 >{{item}}</li>
 </ul>
</template>

<script>
export default {
 name: 'type-filter',
 props: ['types', 'filter', 'handleUpdateFilter'],
 methods: {
 filterClass(filter) {
 return { filter: true, active: filter === this.filter }
 }
 }
}
</script>

<style lang='scss' scoped>
@import './style.scss';
</style>

添加待辦組件

<template>
 <input
 type='text'
 name='add-todo'
 id='add-todo-input'
 class='add-todo'
 @keyup.enter='add'
 placeholder='input then hit enter'
 />
</template>

<script>
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 = ''
 }
 }
 }
}
</script>

<style lang='scss' scoped>
@import './style.scss';
</style>

單個待辦事項組件

<template>
 <p v-if='show' class='todo-item'>
 <span
 :class='messageClass(data.status)'
 @click='handleToggle(data.id)'
 >{{index+1}}. {{data.message}}<i class='date'>{{dateFormat(data.id)}}</i></span>
 <span
 class='delete'
 @click='handleRemove(data.id)'
 >Delete</span>
 </p>
</template>

<script>
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 })
 }
}
</script>

<style lang='scss' scoped>
@import './style.scss';
</style>

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 組件之間的交互的示例代碼

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

通過vue+vuex這2樣技術實現todolist(詳細教程)

通過vue+vuex這2樣技術實現todolist(詳細教程):這篇文章主要介紹了vue + vuex todolist的實現示例代碼,我覺得挺不錯的,現在分享給大家,也給大家做個參考。todolist demo最近有空重新看了一下vuex,然后又寫了一個todolist小demo,原理比較簡單,主要是自己規范了一下代碼的寫法.下載地址 :vue-te
推薦度:
標簽: VUE 實現 技術
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美日韩国产精品va | 一区二区三区日韩 | 国产美女白丝袜精品_a不卡 | 日韩精品在线免费观看 | 成人免费一区二区三区 | 羞羞网站在线观看 | 成人免费一级毛片在线播放视频 | 亚洲成人精品 | 欧美日韩欧美日韩 | 欧美综合自拍亚洲综合百度 | 久久国产精品视频一区 | 免费观看性欧美大片 | 亚洲欧洲综合在线 | 欧美雌雄双性人交xxxx | 美国一级大黄大色毛片视频一 | 欧美日韩极品 | 一级毛片真人不卡免费播 | 欧美在线日韩 | 欧美日韩精品一区二区 | 日韩精品国产精品 | 国产美女视频黄a视频全免费网站 | 免费一看一级毛片 | 蜜臀一区 | 国产69精品久久久久999 | 香蕉久久一区二区三区 | 欧美激情一区二区 | 日本色图在线观看 | 四虎影院永久免费 | 国产高清免费视频 | 亚洲激情在线观看 | 九一毛片 | 国产成人综合久久精品下载 | 五月天婷婷基地 | 国产精品91av| 日韩欧美高清视频 | 亚洲欧美日韩在线观看二区 | 日韩一本 | 国产精品视频一区二区三区w | 国产精品特级毛片一区二区三区 | 国产性做久久久久久 | 欧美一区二区不卡视频 |