vue3組合式API實現todo列表效果
今天的例子是使用vue3的一個新 API:computed()。它可以讓我們創(chuàng)建一個計算屬性 ref,這個 ref 會動態(tài)地根據其他響應式數據源來計算其 .value。
計算屬性會自動跟蹤其計算中所使用的到的其他響應式狀態(tài),并將它們收集為自己的依賴。計算結果會被緩存,并只有在其依賴發(fā)生改變時才會被自動更新。下面用組合式 API的寫法,實現一個可新增、刪除的todo列表效果如下:
ToDo列表效果如下。
隱藏已完成todo效果:
新增一個【運動】todo效果:
該功能的實現:在vue3項目中創(chuàng)建一個todoList.vue文件,完整代碼如下:
(樣式有點丑,自己按需調整吧??)
<script setup> import { ref, computed } from 'vue' let id = 0 const newTodo = ref('') const hideCompleted = ref(false) const todos = ref([ { id: id++, text: '吃飯', done: true }, { id: id++, text: '睡覺', done: true }, { id: id++, text: '學習', done: false } ]) const filteredTodos = computed(() => { return hideCompleted.value ? todos.value.filter((t) => !t.done) : todos.value }) function addTodo() { todos.value.push({ id: id++, text: newTodo.value, done: false }) newTodo.value = '' } function removeTodo(todo) { todos.value = todos.value.filter((t) => t !== todo) } </script> <template> <form @submit.prevent="addTodo"> <input v-model="newTodo" required placeholder="new todo"> <button>Add Todo</button> </form> <ul> <li v-for="todo in filteredTodos" :key="todo.id"> <input type="checkbox" v-model="todo.done"> <span :class="{ done: todo.done }">{{ todo.text }}</span> <button @click="removeTodo(todo)">X</button> </li> </ul> <button @click="hideCompleted = !hideCompleted"> {{ hideCompleted ? 'Show all' : 'Hide completed' }} </button> </template> <style> .done { text-decoration: line-through; } </style>
到此這篇關于vue3組合式API實現todo列表的文章就介紹到這了,更多相關vue3 todo列表內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue使用splice()刪除數組中的一個數據 彈出窗口提示問題
這篇文章主要介紹了vue使用splice()刪除數組中的一個數據 彈出窗口提示問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07vue中ts無法識別引入的vue文件,提示找不到xxx.vue模塊的解決
這篇文章主要介紹了vue中ts無法識別引入的vue文件,提示找不到xxx.vue模塊的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09