vue3使用pinia实现数据缓存
文章目录
- 前言
- 一、pinia是什么?
- 二、安装pinia
- 三、注册pinia
- 四、使用pinia
- 定义数据及方法
- 使用
- 优化
- `如有启发,可点赞收藏哟~`
前言
vue2以前一直使用vuex实现状态管理
vue3之后推出了pinia…
一、pinia是什么?
直观、类型安全、轻便灵活的Vue Store,使用具有DevTools支持的组合api
二、安装pinia
由于pinia本身没有提供设置缓存的功能,不过可以结合pinia-plugin-persistedstate实现
npm i pinia -S
npm i pinia-plugin-persistedstate -S
三、注册pinia
- main.ts文件
import { createApp } from "vue";
import { createPinia } from "pinia";
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import App from "./App/index.vue";const app = createApp(App);
// 注册 pinia , 并在 pinia 使用 piniaPluginPersistedstate
app.use(createPinia().use(piniaPluginPersistedstate));
app.mount("#app");
四、使用pinia
大部分开发都默认在 stores 目录放置缓存相关文件
定义数据及方法
pinia有两种写法,其中一个是同vuex类似的选项式(这种才能结合pinia-plugin-persistedstate设置浏览器缓存),还有一个就是更符合vue3组合式写法
- stores/mapState.ts (选项式)
import { defineStore } from "pinia";export interface MapState {address: string;
}
const { SIS_STORE_NAME } = import.meta.env;export const useMapStore = defineStore(SIS_STORE_NAME + "map", {state: (): MapState => ({address: "",}),getters: {},actions: {setAdress(address: string) {this.address = address;},clearMessage() {this.address = "";},},persist: {/*** 使用的存储* @default $store.id*/key: SIS_STORE_NAME + "map",/*** 存储位置* @default localStorage*/storage: sessionStorage,/*** 需要设置缓存的state 如果未设置即存储所有state* @default undefined*/// paths: [],/*** 存储之前* @default null*/beforeRestore: () => {},/*** 存储之后* @default undefined*/afterRestore: () => {},/*** 启用时在控制台中记录错误。* @default false*/debug: true,},
});
- stores/counter.ts (组合式)
import { ref, computed } from "vue";
import { defineStore } from "pinia";export const useCounterStore = defineStore("counter", () => {const count = ref(0);const doubleCount = computed(() => count.value * 2);function increment() {count.value++;}return { count, doubleCount, increment };
});
使用
如果是字段数据,需要使用storeToRefs 获取为响应式的,方法不用
虽然上述两种定义不同,但调用使用方式是一样的
import { storeToRefs } from "pinia";
import { useMapStore } from "./stores/mapState";
import { useCounterStore } from "./stores/counter";const { address } = storeToRefs(useMapStore())
const { setAdress, clearMessage } = useMapStore()
setAdress('')
clearMessage()const { count } = storeToRefs(useCounterStore())
const { increment } = useCounterStore()
increment()
console.log(count)
优化
- stores/index.ts
import type { App } from "vue";
import { createPinia } from "pinia";
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'const store = createPinia().use(piniaPluginPersistedstate);// 全局注册 store
export function setupStore(app: App<Element>) {app.use(store);
}
export { store };
- main.ts
import { createApp } from "vue";
import App from "./App/index.vue";
import { setupStore } from "./stores";
const app = createApp(App);
// 全局注册 状态管理(store)
setupStore(app)
app.mount("#app");
如有启发,可点赞收藏哟~
相关文章:
vue3使用pinia实现数据缓存
文章目录 前言一、pinia是什么?二、安装pinia三、注册pinia四、使用pinia定义数据及方法使用 优化如有启发,可点赞收藏哟~ 前言 vue2以前一直使用vuex实现状态管理 vue3之后推出了pinia… 一、pinia是什么? 直观、类型安全、轻便灵活的Vue …...
【CSS】min 和 max 函数(设置最大最小值)
文章目录 min() 函数:允许你从逗号分隔符表达式中选择一个最小值作为 CSS 的属性值 width: min(1vw, 4em, 80px);max() 函数:让你可以从一个逗号分隔的表达式列表中选择最大(正方向)的值作为属性的值 width: max(10vw, 4em, 80p…...
ip地址跟wifi有关系吗
你可能已经听说过IP地址和Wi-Fi这两个词,但你有没有想过它们之间是否有关系呢?在这篇文章中,我们将深入探讨IP地址与Wi-Fi之间的密切联系。从基本概念到应用实例,虎观代理小二二将为您解答这个问题。 首先,让我们来了…...
[算法学习笔记](超全)概率与期望
引子 先来讲个故事 话说在神奇的OI大陆上,有一只paper mouse 有一天,它去商场购物,正好是11.11,商店有活动 它很荣幸被选上给1832抽奖 在抽奖箱里,有3个篮蓝球,12个红球 paper mouse能抽3次 蒟蒻的p…...
SpringCloud相关
文章目录 Gateway动态路由灰度策略 FeignRibbon SpringCloud五大组件分别对应(1)服务注册与发现(2)客服端负载均衡(3)断路器(4)服务网关(5)分布式配置 Gatewa…...
在 Linux 和 Windows 系统下查看 CUDA 和 cuDNN 版本的方法,包括使用 nvcc 命令
一直都比较头疼cuda与cudnn版本查看问题,两个系统不一样也不好查看,命令不通用 Linux 查看 CUDA 版本 方法一: nvcc --version或 nvcc -V如果 nvcc 没有安装,那么用方法二。 方法二: 去安装目录下查看ÿ…...
idea项目中java类名出现带 j 小红点,如何解决?
目录 一、问题描述 二、问题解决方案 1、寻找异常问题 2、解决方案 2.1常规操作方法 2.2 快速操作方法 一、问题描述 一打开idea的java项目,发现所有的文件边上都有带J的大红点 虽然,在 git bash 中进行编译时无异常。 但是视觉上给人的感受就是…...
生产环境_移动目标轨迹压缩应用和算法处理-Douglas-Peucker轨迹压缩算法
场景: 我目前设计到的场景是:即在地图应用中,对GPS轨迹数据进行压缩,减少数据传输和存储开销,因为轨迹点太频繁了,占用空间太大,运行节点太慢了,经过小组讨论需要上这个算法&#x…...
HINSTANCE是什么?
HINSTANCE 就是 HMODULE:...
uniapp小程序定位;解决调试可以,发布不行的问题
遇见这个问题;一般情况就两种 1、域名配置问题; 2、隐私协议问题 当然,如果你的微信小程序定位接口没开启;定位也会有问题; 第一种,小程序一般是腾讯地图;所以一般都会用https://apis.map.qq.co…...
C++学习 --pair
目录 1, 什么是pair 2, 创建pair 2-1, 标准数据类型 2-2, 自定义数据类型 3, 查询元素 3-1, 标准数据类型 3-2, 自定义数据类型 1, 什么是pair 数据以键值对形式存放的容器&…...
Android Frgment中onActivityResult无效的问题
前言 最近在fragment中使用二维码扫描 发现拿不到onActivityResult返回 查了资料说是启动模式 或者是返回值为负数 断点调试 发现根本没走onActivityResult方法 问题 onActivityResult 在附属Activity中被拦截了 所以没有触发该方法 解决 在Fragment所依赖的Activity中执…...
【C#二开业务冠邑】通过界面查看数据来源
前言 重构框架(CS【C#】转BS【Java】)时,突然发现公司的代码和数据库,有部分都没有写注释,嘎嘎,这不非常影响开发效率,于是乎,开始帮公司整理表结构和数据来源,也从而加…...
使用大语言模型 LLM 做文本分析
本文主要分享 传统聚类算法 LLM与嵌入算法 嵌入算法聚类 LLM的其他用法 聚类是一种无监督机器学习技术,旨在根据相似的数据点的特征将其分组在一起。使用聚类成簇,有助于解决各种问题,例如客户细分、异常检测和文本分类等。尽管传统的聚…...
Windows本地搭建rtmp推流服务
前言 开发时偶尔需要使用rtmp直播流做视频流测试,苦于网上开源的rtmp视频流都已经失效,无奈只好尝试在本地自己搭建一个rtmp的推流服务,方便测试使用。 一、工具准备 Nginx:使用nginx-rtmp-win64推流工具FFmpeg:官方…...
机器学习二元分类 二元交叉熵 二元分类例子
二元交叉熵损失函数 深度学习中的二元分类损失函数通常采用二元交叉熵(Binary Cross-Entropy)作为损失函数。 二元交叉熵损失函数的基本公式是: L(y, y_pred) -y * log(y_pred) - (1 - y) * log(1 - y_pred)其中,y是真实标签&…...
Postgresql运维信息(一)
1. 运维系统视图 PostgreSQL 提供了一系列系统视图和函数,可以用于获取数据库的运维统计信息。这些信息对于监控和优化数据库性能非常有用。以下是一些常用的 PostgreSQL 运维统计信息: 1.1. pg_stat_activity 这个系统视图包含了当前数据库连接的活动…...
Jupyter Notebook的下载安装与使用教程_Python数据分析与可视化
Jupyter Notebook的下载安装与使用 Jupyter简介下载与安装启动与创建NotebookJupyter基本操作 在计算机编程领域,有一个很强大的工具叫做Jupyter。它不仅是一个集成的开发环境,还是一个交互式文档平台。对于初学者来说,Jupyter提供了友好的界…...
快速入门:构建您的第一个 .NET Aspire 应用程序
##前言 云原生应用程序通常需要连接到各种服务,例如数据库、存储和缓存解决方案、消息传递提供商或其他 Web 服务。.NET Aspire 旨在简化这些类型服务之间的连接和配置。在本快速入门中,您将了解如何创建 .NET Aspire Starter 应用程序模板解决方案。 …...
抖音内容高效获取技术方案:基于douyin-downloader的分布式下载架构实践
抖音内容高效获取技术方案:基于douyin-downloader的分布式下载架构实践 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browse…...
基于Gemini大模型的自动化学术研究工具:从原理到实践
1. 项目概述:当AI学会自主研究 最近在GitHub上闲逛,发现了一个让我眼前一亮的项目: supratikpm/gemini-autoresearch 。简单来说,这是一个利用Google的Gemini大语言模型,实现自动化、端到端学术研究的工具。作为一名…...
什么是AI-Native Development?20年架构师亲历3代AI工程演进后给出的5条铁律
更多请点击: https://intelliparadigm.com 第一章:什么是AI-Native Development?2026奇点智能技术大会给你答案 AI-Native Development 并非简单地将大模型 API 接入传统应用,而是以 AI 为一等公民重构软件生命周期——从需求建…...
基于XGBoost与神经网络的NBA赛果预测:从数据采集到凯利公式下注
1. 项目概述:用机器学习预测NBA赛果与盘口如果你对NBA比赛和数据分析都感兴趣,那么把两者结合起来,用机器学习模型来预测比赛胜负和总分盘口(大小分),无疑是一件极具吸引力的事情。这不仅仅是简单的数据堆砌…...
xrdp会话管理进阶:从sesman.ini配置解读到打造稳定的多用户远程环境
xrdp会话管理进阶:从sesman.ini配置解读到打造稳定的多用户远程环境 远程桌面服务在现代IT基础设施中扮演着关键角色,特别是对于需要为团队提供Linux桌面访问的中小型企业和实验室环境。xrdp作为开源的远程桌面协议(RDP)服务器,以其轻量级和易…...
AI技能化跨平台社交发布:一次编写,处处发布的自动化解决方案
1. 项目概述:一个为AI助手赋能的社交发布技能库如果你和我一样,经常需要将同一个项目更新、技术分享或者产品动态同步到十几个不同的社交媒体平台,那你一定深有体会:这活儿太磨人了。每个平台都有自己的调性、字数限制、图片尺寸要…...
法律AI实战:基于OpenCLAW构建破产法智能辅助系统
1. 项目概述与核心价值最近在整理一些法律实务相关的工具和资源,发现了一个挺有意思的项目,叫“zhang-bankruptcy-law”。虽然项目描述和正文信息不多,但从项目名称和关键词来看,这应该是一个聚焦于中国破产法领域的知识库或技能工…...
Docker工具箱镜像构建:Alpine集成开发调试工具链实战
1. 项目概述:一个为开发者定制的“瑞士军刀”式Docker镜像在开发与运维的日常工作中,我们常常会遇到一些高频但琐碎的任务:需要快速验证一个API接口、临时搭建一个测试环境、或者只是想在一个干净的环境里跑一段脚本。每次都要从零开始安装依…...
纯Bash脚本构建轻量级AI助手:架构解析与实战部署
1. 项目概述:用纯Bash脚本构建你的个人AI助手 如果你和我一样,是个喜欢在终端里折腾的开发者,同时又对当前各种AI助手的复杂部署和资源消耗感到头疼,那么今天聊的这个项目绝对会让你眼前一亮。BashoBot,一个完全用Bas…...
基于MCP协议构建AI钱包助手:安全架构与Claude集成实践
1. 项目概述:一个钱包的MCP服务器意味着什么?最近在折腾AI智能体开发,特别是围绕Claude Desktop这类工具构建个人工作流时,我遇到了一个高频痛点:如何让AI助手安全、可控地访问我的链上资产信息,或者执行一…...
