pinia实现todos

store/todos.js

//导入defineStore
import {defineStore} from 'pinia'
const userTodosStore=defineStore('todos',{
state:()=>({// list:[//     {id:1,name:'吃饭',done:false},//     {id:2,name:'睡觉',done:true},//     {id:3,name:'打豆豆',done:false}// ],list:JSON.parse(localStorage.getItem('todos')|| '[]'),filters:['全部','未完成','已完成'],active:'全部'
}),
actions:{//修改状态changeDone(id){const todo=this.list.find(item=>item.id===id)todo.done=!todo.done},//删除delTask(id){this.list=this.list.filter(item=>item.id !== id)},//添加addTask(taskname){this.list.push({id:Date.now(),name:taskname,done:false})},//全选changeAll(e){this.list.forEach(item=>item.done=e.target.checked)},//清除已完成clearDone(){this.list=this.list.filter(item=>!item.done)},//点击状态changeActive(active){this.active=active}},
getters:{isAll(){return this.list.every(item=>item.done)},leftCount(){return this.list.filter(item=>!item.done).length},showList(){if(this.active==='已完成'){return this.list.filter(item=>item.done)}else if(this.active==='未完成'){return this.list.filter(item=>!item.done)}else{return this.list}}
}})
export default userTodosStore

App.vue

<script setup>
import TodoHeader from './components/TodoHeader.vue'
import TodoMain from './components/TodoMain.vue'
import TodoFooter from './components/TodoFooter.vue'
</script><template><section class="todoapp"><TodoHeader></TodoHeader><TodoMain></TodoMain><TodoFooter></TodoFooter></section>
</template><style></style>

TodoMain.vue

<script setup>
import userTodosStore from '../store/todos'
// import {watch} from 'vue'
//获取store对象
const todos=userTodosStore()
//$subscribe 作用是监视store数据的变化,变化后会触发回调函数执行// watch(todos.list,()=>{
//   localStorage.setItem('todos',JSON.stringify(todos.list))
// })
todos.$subscribe(()=>{localStorage.setItem('todos',JSON.stringify(todos.list))
})</script><template><section class="main"><input @change="todos.changeAll($event)" :checked="todos.isAll" id="toggle-all" class="toggle-all" type="checkbox" /><label for="toggle-all">Mark all as complete</label><ul class="todo-list"><li v-for="item in todos.showList" :key="item.id" :class="{completed:item.done}"><div class="view"><input class="toggle" type="checkbox" :checked="item.done"@change="todos.changeDone(item.id)"/><label>{{ item.name }}</label><button class="destroy" @click="todos.delTask(item.id)"></button></div><input class="edit" value="Create a TodoMVC template" /></li><!-- <li><div class="view"><input class="toggle" type="checkbox" /><label>Buy a unicorn</label><button class="destroy"></button></div><input class="edit" value="Rule the web" /></li> --></ul></section>
</template><style lang="less" scoped></style>

ToDoHeader.vue

<script setup>
import {ref} from 'vue'
import userTodosStore from '../store/todos'//获取store对象
const todos=userTodosStore()
const taskname=ref('')
const hKeydown=()=>{
if(taskname.value.length===0)returntodos.addTask(taskname.value)taskname.value=''
}
</script><template><header class="header"><h1>todos</h1><input class="new-todo" placeholder="What needs to be done?" autofocus v-model.trim="taskname"@keydown.enter="hKeydown"/></header>
</template><style lang="less" scoped></style>

ToDoFooter.vue

<script setup>
import userTodosStore from '@/store/todos';
const todos=userTodosStore()</script><template><footer class="footer"><span class="todo-count">还有<strong>{{todos.leftCount}}</strong> 个未完成</span><ul class="filters"><li v-for="item in todos.filters" :key="item"><a @click="todos.changeActive(item)" :class="{selected:item === todos.active}" >{{item}}</a></li><!-- <li><a href="#/active">Active</a></li><li><a href="#/completed">Completed</a></li> --></ul><button class="clear-completed " @click="todos.clearDone">清除已完成</button></footer>
</template><style lang="less" scoped></style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/433395.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI为ChatGPT推出多语言功能Alpha版灰度测试;微软Copilot网页端和App更新了GPTs和购买Copilot Pro功能

OpenAI为ChatGPT推出多语言功能灰度测试。 微软Copilot网页端和App更新了GPTs和购买Copilot Pro功能 关于ChatGPT的详细介绍请看我这篇文章&#xff1b;关于Copilot Pro的详细介绍请看我这篇文章。 OpenAI推出多语言功能灰度测试 1月26日&#xff0c;OpenAI对其广受欢迎的C…

Cesium工具应用

文章目录 0.引言1.场景截图2.卷帘对比3.反选遮罩4.鹰眼视图5.指南针与比例尺6.坐标测量7.距离测量8.面积测量9.热力图10.视频投影11.日照分析12.淹没分析13.通视分析14.可视域分析15.缓冲区分析16.地形开挖17.要素聚合18.开启地下模式19.开启等高线20.坡度坡向21.填挖方量计算2…

对话泛能网程路:能源产业互联网,行至中程

泛能网的能源产业互联网的标杆价值还不仅于此。其在产业互联之外&#xff0c;也更大的特殊性在于其也更在成为整个碳市场的“辅助运营商”&#xff0c;包括电力、碳等一系列被泛能网帮助企业改造和沉淀的要素资产&#xff0c;都在构成着碳交易市场的未来底层。 这恰是产业互联…

解决:‘chromedriver’ executable needs to be in PATH

解决&#xff1a;chromedriver’ executable needs to be in PATH 文章目录 解决&#xff1a;chromedriver’ executable needs to be in PATH背景报错问题报错翻译报错位置代码报错原因解决方法方法一&#xff1a;检查python安装路径有没有添加到环境变量里面方法二&#xff1…

应急响应-Linux-日志分析

日志概述 Linux系统中的日志一般存放在目录"/var/log"下&#xff0c;具体的日志功能如下。 /var/log/wtmp&#xff1a;记录登录进入、退出、数据交换、关机和重启&#xff0c;即last。/var/log/cron&#xff1a;记录与定时任务相关的日志信息。/var/log/messages&am…

Kafka3学习笔记

文章目录 一、Kafka概述和入门1、Kafka概述1.1 定义1.2 消息队列1.3 Kafka 基础架构 2、Kafka 快速入门2.1 安装部署2.2 集群启停脚本 3、Kafka 命令行操作3.1 Topic命令行操作3.2 生产者命令行操作3.3 消费者命令行操作 二、Kafka核心概念详解1、Kafka 生产者1.1 生产者消息发…

C# 使用 SapNwRfc 调用SAP RFC

好久没写过相关代码&#xff0c;今天又来贡献一篇 C# 使用 SapNwRfc 调用SAP RFC。用VS2022的WINFORM应用程序&#xff0c;使用NuGet中的SapNwRfc类库&#xff0c;call SAP系统中的RFC&#xff0c;传入7个参数&#xff0c;得到RFC返回的2张表的数据。 一、VS2022中新建WINFORM…

ppt背景图片怎么设置?让你的演示更加出彩!

PowerPoint是一款广泛应用于演示文稿制作的软件&#xff0c;而背景图片是演示文稿中不可或缺的一部分。一个好的背景图片能够提升演示文稿的整体效果&#xff0c;使观众更加关注你的演示内容。可是ppt背景图片怎么设置呢&#xff1f;本文将介绍ppt背景图片设置的三个方法&#…

深度解析单片机:历史、发展与您关心的问题

什么是单片机&#xff1f; 定义&#xff1a;单片机是一种集成了中央处理器&#xff08;CPU&#xff09;、内存和外设功能的微型计算机系统。与传统计算机相比&#xff0c;单片机通常集成在一个芯片上&#xff0c;用于控制特定的应用。#单片机# 特点&#xff1a; 封装紧凑&…

苹果手机突然无服务了,这是怎么回事?

苹果手机无疑是一款备受青睐的智能设备&#xff0c;但有时候我们可能会面临一个令人困扰的情况——苹果手机突然无服务。这种情况可能会在任何时候发生&#xff0c;无论是在使用手机时&#xff0c;刚刚升级系统&#xff0c;或者是突然发现在本应有信号的区域却无法连接到运营商…

WPF自定义圆形百分比进度条

先看效果图 1.界面代码 <UserControl x:Class"LensAgingTest.CycleProcessBar1"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc"http://schemas.op…

Ansible自动化运维(三)Playbook 模式详解

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…