vue基础(第四章 Pinia)
1:Pinia 西班牙语菠萝1.1:Pinia是什么Pinia 是Vue 官方新一代状态统一管理库当数据需要在多个不相关的组件间共享的时候需要使用Pinia类似 Redis 集中缓存。专门为vue2和vue3设计是Vuex 的替代方案。Vue 3 官方已推荐新项目直接使用 Pinia不再主推 Vuex。我们在上一章节的路由器中学习了组件之间传递数据比如多层嵌套、兄弟组件、跨页面路由之间数据传递会非常麻烦。很麻烦但是pinia可以完美的结局这个问题 Pinia把公共数据放到全局仓库 (store)任意组件都可以直接读取、修改。F5 刷新页面Pinia 清空前端重新请求接口再回填 Pinia。补充如果想让 Pinia 拥有类似 redis “持久化” 效果前端可以搭配pinia‑plugin‑persistedstate把数据存到浏览器localStorage。localStorage 相当于浏览器本地小磁盘但依然只属于这台电脑这个浏览器别的设备访问不到和后端 Redis 不是一回事。1.2:有什么作用管理跨组件共享全局状态场景举例工业后台 / MES 系统经常用到用户登录信息、token、角色权限、菜单列表页面全局配置、筛选条件缓存多个页面共享的设备列表、工单筛选参数弹窗全局状态、消息通知如果不用状态库组件之间多层传参props 层层传递代码耦合严重 使用 Pinia任意组件直接读取 / 修改全局状态1.3:Pinia 对比 Vuex 核心优势面试必说移除了 MutationVuex修改 state 必须走 mutation同步、action 处理异步模板代码繁琐 Pinia可以直接修改 state异步逻辑写在 action 里结构简单。没有嵌套 modulesVuex 模块嵌套store.user.token Pinia 每个 store 是独立文件扁平结构导入即用不用命名空间 namespaced。原生 TypeScript 支持极好类型自动推导不需要额外复杂类型声明非常适合script setup TS 项目。代码更简洁样板代码极少不需要commit、dispatch降低学习成本。支持组件外部调用 store路由守卫、axios 拦截器里可以直接引入 store 操作状态Vuex 也能实现但 Pinia 更顺畅。Devtools 调试友好支持时间旅行调试。1.4:Pinia的核心状态Pinia 三大核心概念state状态存放共享数据等同于 Vuex 的 stategettters派生状态相当于计算属性有缓存actions修改状态方法支持同步、异步替代 Vuex mutation action2:实战开始2.1:使用pinia之前组件count.vuetemplate div h1pinia的person组件/h1 h2计数器{{ count }}/h2 名字input typetext v-modelname{{ name }} hr !-- v-model双向数据绑定。影响value属性 -- select v-model.numbern option value11/option option value22/option option value33/option /select button clickadd数字/button button clickminus-数字/button /div /template script setup langts import { ref } from vue; let name ref(张三); console.log(name); // 计数器方法 let count ref(0); let n ref(1); function add() { count.value n.value; } function minus() { count.value - n.value; } /script style/style2.2:使用pinia做状态集中管理1:首先安装pinianpm install pinia2:在main.ts中使用piniaimport { createApp } from vue import { createPinia } from pinia import App from ./App.vue const app createApp(App) //创建pinia const pinia createPinia() //使用pinia app.use(pinia) app.mount(#app)2.3:新建store下的count.ts 操作piniaimport { defineStore } from pinia; //定义仓库 const userCountStore defineStore(count, { //状态 state存放共享数据等同于 Vuex 的 state state() { //返回数据 return { name:张三, count: 0, n: 1, }; }, // Actions修改状态的方法支持同步/异步替代Vuex mutationaction actions: { add2():void { this.count this.n; }, minus2() { this.count - this.n; }, // 异步示例 async changeName(newName: string) { // 可以在这里请求后端接口 this.name newName; }, }, }); //导出仓库 默认单利多组件共享 //export default userCountStore; export { userCountStore };2.4:count.vue组件使用piniatemplate div h1pinia的person组件/h1 h2计数器{{ count }}/h2 名字input typetext v-modelname{{ name }} hr !-- v-model双向数据绑定。影响value属性 -- select v-model.numbern option value11/option option value22/option option value33/option /select button clickadd数字/button button clickminus-数字/button hr h1使用pinia/h1 h2计数器{{ countStore.count }}/h2 !-- v-model双向数据绑定。影响value属性 -- select v-model.numbercountStore.n option value11/option option value22/option option value33/option /select button clickadd1数字/button button clickminus1-数字/button hr button clickadd11数字/button button clickminus11-数字/button hr /div /template script setup langts import { ref } from vue; import { userCountStore } from ../store/count let name ref(张三); console.log(name); //1:不实用pinia 计数器方法 let count ref(0); let n ref(1); function add() { count.value n.value; } function minus() { count.value - n.value; } //2:使用pinia, 得到单利的countStore let countStore userCountStore() function add1() { countStore.count countStore.n; } function minus1() { countStore.count - countStore.n; } function add11() { //通过仓库调用方法 countStore.add2(); } function minus11() { //通过仓库调用方法 countStore.minus2(); } /script style/style2.5:storeToRefsstoreToRefs是 Pinia 提供的工具函数专门用来安全解构 Store 中的 state、getter保证解构出来的变量依旧保留响应式。template div h1pinia的person组件/h1 h2计数器{{ count }}/h2 名字input typetext v-modelname{{ name }} hr !-- v-model双向数据绑定。影响value属性 select v-model.numbern option value11/option option value22/option option value33/option /select button clickadd数字/button button clickminus-数字/button -- hr h1使用pinia/h1 h2计数器{{ count }}/h2 !-- v-model双向数据绑定。影响value属性 -- select v-model.numbern option value11/option option value22/option option value33/option /select button clickadd1数字/button button clickminus1-数字/button hr button clickadd11数字/button button clickcountStore.minus2-数字/button hr /div /template script setup langts import { ref } from vue; import { userCountStore } from ../store/count import { storeToRefs } from pinia; let name ref(张三); console.log(name); // //1:不实用pinia 计数器方法 // let count ref(0); // let n ref(1); // function add() { // count.value n.value; // } // function minus() { // count.value - n.value; // } //2:使用pinia, 得到单利的countStore let countStore userCountStore() //storeToRefs结构才能响应式 let {count,n}storeToRefs(countStore); //这两个对象也有了响应式 function add1() { countStore.count countStore.n; } function minus1() { countStore.count - countStore.n; } function add11() { //通过仓库调用方法 countStore.add2(); } function minus11() { //通过仓库调用方法 countStore.minus2(); } /script style/style2.6:pinia持久话因为页面刷新数据会丢失1:安装持久化插件npm install pinia-plugin-persistedstate2:main.ts 注册插件import piniaPluginPersistedstate from pinia-plugin-persistedstate const pinia createPinia() pinia.use(piniaPluginPersistedstate)3:仓库开启持久化export const usePersonStore defineStore(person, { state: () ({...}), getters:{}, actions:{}, persist: true // 开启持久化 })3:案例

相关新闻

芯片测试:从DFT设计到量产良率管理的系统工程实践

芯片测试:从DFT设计到量产良率管理的系统工程实践

1. 项目概述:从“测不准”到“测得准”的认知跃迁 “芯片测试问题”这六个字,对于任何一个身处半导体行业,尤其是设计、制造、封测环节的工程师来说,都足以引发一场头脑风暴。它不像“如何设计一个CPU”那样宏大叙事,也…

2026/8/12 19:43:14 阅读更多 →
和高人聊,从书上学,在事上练

和高人聊,从书上学,在事上练

天赋才能,被王兴排在人才成长的第一位。他曾这样描述自己的日常:“我的大部分时间还是用在读书、交流、思考、传播上。我需要确保对外界的认知具备较好的前瞻性,建立对过去、未来的认知框架。看书有利于建立宏观的框架,但是书的问…

2026/8/12 19:43:14 阅读更多 →
利用SharPersist与WMI事件订阅实现Windows隐蔽持久化攻防实战

利用SharPersist与WMI事件订阅实现Windows隐蔽持久化攻防实战

1. 项目概述:当“持久化”成为一场猫鼠游戏在攻防对抗的世界里,初始的漏洞利用或权限获取往往只是万里长征的第一步。真正的较量,始于攻击者能否在被发现和清除之前,在被攻陷的系统上牢牢地“扎根”。这个过程,我们称之…

2026/8/12 19:42:13 阅读更多 →

最新新闻

AI Agent长任务管理:取消、重试与中断恢复的工程实践

AI Agent长任务管理:取消、重试与中断恢复的工程实践

1. 项目概述:当AI Agent遇上“长跑”任务 最近在折腾一个AI Agent项目,核心是让它处理一些耗时很长的任务,比如自动生成一份几十页的市场分析报告,或者遍历一个大型知识库进行深度信息抽取。做着做着就发现,事情远没有…

2026/8/13 23:11:44 阅读更多 →
从“人找图”到“图找人”:慧德敏学SW插件SolidKits赋能非标企业构建数字化设计知识资产

从“人找图”到“图找人”:慧德敏学SW插件SolidKits赋能非标企业构建数字化设计知识资产

引言:非标设备设计的效率瓶颈 非标设备行业普遍面临"多品种、小批量、高变更"的挑战。行业调研数据显示,非标项目设计阶段约70%的工时消耗于重复性图纸修改,包括尺寸关联更新、BOM同步、工程图重出等环节。单次关键尺寸变更往往引发…

2026/8/13 23:11:43 阅读更多 →
珠海图远建设公司网站揭秘:一家老牌建设企业如何在数字化浪潮中坚守初心与匠心

珠海图远建设公司网站揭秘:一家老牌建设企业如何在数字化浪潮中坚守初心与匠心

在珠海这座被海风轻轻拥抱、被繁华与静谧完美交织的城市的深处,有一种声音往往不被大众所熟知,却真实地支撑着城市的每一次呼吸与脉动。那就是建设者的声音。当我们在阳光明媚的傍晚漫步于情侣路,感受椰风海韵时;当我们在高楼林立的香洲核心区仰望现代建筑的几何美感时;当…

2026/8/13 23:11:43 阅读更多 →
膝盖痛风急性肿痛:从剂型与药理分析外用制剂筛选思路

膝盖痛风急性肿痛:从剂型与药理分析外用制剂筛选思路

摘要痛风发作不只局限于脚趾跖趾关节,不少患者会出现膝盖受累,关节肿胀、发热、活动受限,严重影响行走与日常活动。在风湿科规范系统治疗之外,很多人希望借助外用制剂改善局部不适感。不少饱受膝盖痛风困扰的患者都会疑惑&#xf…

2026/8/13 23:11:43 阅读更多 →
Johannes 《Linux内核模块与设备驱动开发:编写Linux驱动程序》 (14-19)设备树相关

Johannes 《Linux内核模块与设备驱动开发:编写Linux驱动程序》 (14-19)设备树相关

视频:https://www.bilibili.com/video/BV18SE26cEjn?vd_source92b7efa4daa5bb4fdcdc9f2db97c307b&p14 lesson13后面的视频是说设备树和misc 设备,感觉设备树讲的不太好,没有基础的估计完全看不懂,而且这个系列没有说中断&am…

2026/8/13 23:11:43 阅读更多 →
AI驱动自动化:n8n与Codex结合构建跨境电商智能工作流

AI驱动自动化:n8n与Codex结合构建跨境电商智能工作流

1. 项目缘起:当n8n遇上Codex,跨境电商自动化迎来新解法最近在跨境电商圈子里,一个老牌工具n8n和AI新贵Codex的组合,又开始被频繁提起。作为一名长期和各类自动化工具打交道的从业者,我最初看到“n8n又活了”这个说法时…

2026/8/13 23:10:43 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者,或者正准备踏入这个领域,那么Visual Studio(后面简称VS)绝对是你绕不开的伙伴。但有时候,这个伙伴会跟你开一个不大不小的玩笑:你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →