Pinia的使用技巧
一、安装
npm install pinia
二、main.ts引入
import { createApp } from 'vue'
import App from './App.vue'
import { createPinia } from 'pinia'const app = createApp(App)
app.use(createPinia())
app.mount('#app')
三、定义参数
import { defineStore } from 'pinia'type User = {name: string,age: number
}const peo: User = {name: 'cqs',age: 23
}const login = (): Promise<User> => {return new Promise(resolve => {setTimeout(() => {resolve(peo)}, 2000)})
}export const useTestStore = defineStore('user', {state: () => {return {name: 'cqs',age: 23,user: <User>{}}},getters: {getNewName():string {return `好名字:${this.name}-${this.getAge}`},getAge():number {return this.age}},actions: {setName(name: string) {this.name = name;},async setUser() {const user = await login()this.user = user}}
})
四、store使用
1.直接获取
<script setup lang="ts">
import { useTestStore } from '../store'const user = useTestStore();console.log(user.age)
</script>
2.通过storeToRefs 获取
<script setup lang="ts">
import { storeToRefs } from 'pinia'
const { name, age } = storeToRefs(user)
</script>
3.$patch修改
<script setup lang="ts">
import { useTestStore } from '../store'const user = useTestStore();user.$patch({name: '123'
})
user.$patch((state)=>{state.name = '456'
})
</script>
4.直接修改
<script setup lang="ts">
import { useTestStore } from '../store'const user = useTestStore();user.name = '123'
</script>
5.通过$state修改
<script setup lang="ts">
import { useTestStore } from '../store'const user = useTestStore();
//重写需要参数都传
user.$state = {name: 'qwe',age: 234,user: {name: '123',age: 23}}
</script>
五、回滚数据
<script setup lang="ts">
import { useTestStore } from '../store'const user = useTestStore();user.$reset()
</script>
六、监听数据变化
<script setup lang="ts">
import { useTestStore } from '../store'const user = useTestStore();//监听数据改变
user.$subscribe((args, state)=>{console.log(args);console.log(state);
}, {detached: true, //页面销毁,方法不会销毁deep: true,flush: 'post'
})//监听调用actions,第二个参数true页面销毁,方法不会销毁
user.$onAction((args)=>{args.after(()=>{console.log('监听调用数据改变之后');})console.log(args);
}, true)
</script>
七、添加浏览器缓存,避免刷新页面数据消失
修改main.ts
import { createApp, toRaw } from 'vue'
import App from './App.vue'
import { createPinia, PiniaPluginContext } from 'pinia'const app = createApp(App)type Option = {key: string
}const PiniaPlugin = (option: Option) => {return (context: PiniaPluginContext) => {const { store } = context;const data = localStorage.getItem('pinia-' + option.key + store.$id);store.$subscribe(() => {localStorage.setItem('pinia-' + option.key + store.$id, JSON.stringify(toRaw(store.$state)))})return {...(data ? JSON.parse(data) : {})}}
}const store = createPinia();
store.use(PiniaPlugin({ key: 'cqs' }))
app.use(store)
app.mount('#app')
相关文章:
Pinia的使用技巧
一、安装 npm install pinia 二、main.ts引入 import { createApp } from vue import App from ./App.vue import { createPinia } from piniaconst app createApp(App) app.use(createPinia()) app.mount(#app)三、定义参数 import { defineStore } from piniatype User …...
『亚马逊云科技产品测评』活动征文|AWS 数据库产品类别及其适用场景详细说明
授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 目录 前言、AWS 数据库产品类别 01、Amazon Aurora 02、Amazon Docum…...
S32K324 UDS Bootloader开发-下位机篇-Bootload软件(3)
文章目录 前言校验算法34服务响应的字节字节对齐问题跳转问题Boot Delay功能重要配置跳转标志FLASH DRIVER和APP区域CAN ID配置中断使能与禁止CAN TP配置总结前言 上一篇文章介绍了S32K324 UDS Bootlodaer开发中的UDS相关的更改,本文总结一下调试过程中出现的一些问题,及解决…...
如何在 Vim 中剪切、复制和粘贴
目录 前言 如何在 Vim 编辑器中复制文本 如何在 Vim 编辑器中剪切文本 如何在 Vim 编辑器中粘贴文本 如何通过选择文本来剪切和复制文本 通过选择文本复制 在 Vim 中选择文本来剪切文本 前言 在本篇 Vim 快速技巧中,你将学习到剪切和复制粘贴的相关知识。 剪…...
算法基础一
两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 解题思路:这道题最优的做法时间复杂度是O(n),顺序扫描数组,对每一个元素在…...
6.3 Windows驱动开发:内核枚举IoTimer定时器
内核I/O定时器(Kernel I/O Timer)是Windows内核中的一个对象,它允许内核或驱动程序设置一个定时器,以便在指定的时间间隔内调用一个回调函数。通常,内核I/O定时器用于周期性地执行某个任务,例如检查驱动程序…...
大数据-之LibrA数据库系统告警处理(ALM-37005 GTM进程异常)
告警解释 当出现如下情况时,产生该告警: GTM实例数据目录中的gtm.conf配置文件不存在或者其中某个配置参数不正确时。GTM实例服务线程无法监听IP,或者无法绑定监听端口。GTM实例进程没有其数据目录读写权限时。 告警属性 告警ID 告警级别…...
一种LED驱动专用控制电路
一、基本概述 TM1620是一种LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU数字接口、数据锁存 器、LED驱动等电路。本产品质量可靠、稳定性好、抗干扰能力强。主要适用于家电设备(智能热 水器、微波炉、洗衣机、空调、电磁炉)、机顶盒、电子称、…...
Matlab进阶绘图第33期—双曲面图
在《Matlab论文插图绘制模板第56期—曲面图(Surf)》中,我分享过曲面图的绘制模板。 然而,有的时候,需要在一张图上绘制两个及以上的曲面图,且每个曲面图使用不同的配色方案。 在Matlab中,一张…...
【Linux】23、内存超详细介绍
文章目录 零、资料一、内存映射1.1 TLB1.2 多级页表1.3 大页 二、虚拟内存空间分布2.1 用户空间的段2.2 内存分配和回收2.2.1 小对象2.2.2 释放 三、查看内存使用情况3.1 Buffer 和 Cache3.1.1 proc 文件系统3.1.2 案例3.1.2.1 场景 1:磁盘和文件写案例3.1.2.2 场景…...
官网IDM下载和安装的详细步骤
目录 一、IDM是什么 二、下载安装 三、解决下载超时的问题 四、谷歌浏览器打开IDM插件 谷歌浏览器下载官网👇 五、测试 六、资源包获取 一、IDM是什么 IDM(internet download manager)是一个互联网下载工具插件,常见于用…...
【面经八股】搜广推方向:常见面试题(三)
【面经&八股】搜广推方向:常见面试题(三) 文章目录 【面经&八股】搜广推方向:常见面试题(三)1. 如何解决数据不平衡2. 假设检验的两类错误3. 为什么快排比堆排快4. RMSE、MSE、MAE5. 双塔模型的应用6. XGBoost如果损失函数没有二阶导,该怎么办7. AUC是如何实现的…...
[NOIP2006]明明的随机数
一、题目 登录—专业IT笔试面试备考平台_牛客网 二、代码 set去重,再利用vector进行排序 std::set是一个自带排序功能的容器,它已经按照一定的规则(默认是元素的小于比较)对元素进行了排序。因此,你不能直接对std::s…...
auth模块
一. auth模块前戏 # 引入:其实我们在创建好一个django项目之后直接执行数据库迁移命令会自动生成很多表 例如:django_sessionauth_user我们知道django在启动之后就可以直接访问admin路由,需要输入用户名和密码,数据参考的就是auth_user表,并且还必须是管…...
H5ke12--3--iframe--编辑邮箱的制作
下面我们来window.iframes[] frames是一个全局变量,它是一个对象数组,其中包含当前窗口中的所有框架(如果存在)。 在这段代码中,let frameframes[0];是将第一个框架赋值给变量frame。通过frame.document.designMode&q…...
Python面经【3】
零、可迭代对象 可迭代对象是迭代器和生成器的基础,简单来说,可以使用for循环遍历的对象就是可迭代对象,比如常见的list、set和dict。在python中,可迭代对象是指实现了__iter__()方法的对象,当我们使用for循环遍历一个…...
Python集合类型
目录 目标 版本 官方文档 集合分类 实战 创建 循环 常用方法 目标 掌握set和frozenset两种集合的使用方法,包括:创建、交集、并集、差集等操作。 版本 Python 3.12.0 官方文档 Set Types — set, frozensethttps://docs.python.org/3/library/s…...
npm install报错常用解题思路
最近刚接手一个“新”项目,让我很无语。明明是去年起的项目,但是它所用的部分技术栈非常旧,我启动项目,控制台一堆warning报错,然后项目结构也很让我不适应,很多地方都可以用文件夹包一下来方便定位。哎&am…...
conda: error: argument COMMAND: invalid choice
简介 使用conda activate 时,可能会报:conda: error: argument COMMAND: invalid choice: ‘activate’ (choose from ‘clean’, ‘compare’, ‘config’, ‘create’, ‘info’, ‘init’, ‘install’, ‘list’, ‘notices’, ‘package’, ‘remo…...
数仓成本下降近一半,StarRocks 存算分离助力云览科技业务出海
成都云览科技有限公司倾力打造了凤凰浏览器,专注于为海外用户提供服务,公司致力于构建一个全球性的数字内容连接入口,为用户带来更为优质、高效、个性化的浏览体验。 作为数据驱动的高科技公司,从数据中挖掘价值一直是公司核心任务…...
为什么93%的企业NER项目卡在第2.7阶段?——基于奇点大会27家头部厂商落地数据的断点诊断模型
第一章:为什么93%的企业NER项目卡在第2.7阶段? 2026奇点智能技术大会(https://ml-summit.org) “第2.7阶段”并非官方标准,而是工业界对NER(命名实体识别)落地过程中一个高频失败临界点的戏称——它介于完成模型训练&…...
SITS2026白皮书深度解读:5大工程化瓶颈、3类落地陷阱与7步标准化实施路径
第一章:SITS2026发布:大模型工程化白皮书下载 2026奇点智能技术大会(https://ml-summit.org) 白皮书核心价值 《SITS2026大模型工程化白皮书》由ML Summit联合17家头部AI基础设施企业与开源社区共同编制,聚焦从千卡级训练到毫秒级推理的全栈…...
Sqlite3 数据库文件操作全指南
1. Sqlite3入门:从零开始操作数据库文件 第一次接触Sqlite3时,我被它的轻量级和易用性惊艳到了。这个只有几百KB的数据库引擎,却能处理GB级别的数据,而且完全不需要复杂的服务器配置。记得当时做一个个人项目,需要存储…...
Windows 11终极瘦身指南:用Win11Debloat告别卡顿与隐私烦恼
Windows 11终极瘦身指南:用Win11Debloat告别卡顿与隐私烦恼 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter a…...
ConvNeXt 系列改进:二次创新 ConvNeXt:结合 RepVGG 结构重参数化,训练多分支、推理单路
关键词:ConvNeXt RepVGG 结构重参数化 推理加速 模型部署 写在前面 2026年的视觉模型赛道呈现出一种有趣的“返璞归真”趋势——在Transformer狂飙数年之后,卷积网络正以全新的姿态回归。这其中,ConvNeXt无疑是纯卷积阵营中最耀眼的明星。从2022年Meta AI首次提出至今,…...
如何构建高效跨设备键鼠共享系统:Lan Mouse终极指南
如何构建高效跨设备键鼠共享系统:Lan Mouse终极指南 【免费下载链接】lan-mouse mouse & keyboard sharing via LAN 项目地址: https://gitcode.com/gh_mirrors/la/lan-mouse 在当今多设备协同的工作环境中,跨设备键鼠共享技术已成为提升工作…...
OWL ADVENTURE处理复杂表格图像:从截图到结构化数据
OWL ADVENTURE处理复杂表格图像:从截图到结构化数据 每次看到同事为了把一张财务报表截图里的数据录入Excel而手动敲打半天,或者为了整理一份实验报告里的表格而焦头烂额时,我就在想,这事儿能不能让机器来干?传统的方…...
从MCAS系统缺陷看软件安全:一个传感器故障如何导致波音737MAX两次空难?
从MCAS系统缺陷看航空软件安全设计的致命盲区 当一架现代客机以每小时800公里的速度巡航在万米高空时,它的每一个飞行动作背后都有数百万行代码在实时运算。2018年至2019年发生的两起波音737MAX空难,将航空电子系统中一个名为MCAS的软件模块推上了风口浪…...
别再只会while(1)了!聊聊STM32裸机开发的6种实用架构,新手也能选对
STM32裸机开发的6种架构实战指南:从超级循环到事件驱动 第一次用STM32做温控器项目时,我把所有代码塞进了while(1)循环。两周后,当需要增加蓝牙控制和OLED界面时,代码已经变成了一团乱麻——按键检测延迟导致温度调节失灵…...
Figma中文插件终极指南:3分钟让Figma界面变中文的完整教程
Figma中文插件终极指南:3分钟让Figma界面变中文的完整教程 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 如果你是一名中文设计师,每天面对Figma的全英文界面感…...
