当前位置: 首页 > news >正文

pinia-plugin-persistedstate的使用

pinia持久化存储的使用

安装

npm install pinia-plugin-persistedstate

 注册

import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)export default pinia

 使用

添加persist选项

import { defineStore } from 'pinia'export const useAuthStore = defineStore('auth', {state: () => ({token: '',userInfo: null,}),actions: {// ...你的 actions},persist: true, // 启用持久化
})

 

高级用法

1. 部分状态持久化

typescript

复制

下载

persist: {paths: ['token', 'userInfo.name'], // 只持久化 token 和 userInfo 的 name 属性
}

2. 自定义序列化

typescript

复制

下载

persist: {serializer: {serialize: JSON.stringify,deserialize: JSON.parse,},
}

3. 使用 sessionStorage

typescript

复制

下载

persist: {storage: sessionStorage,
}

4. 使用 Cookie

首先安装 js-cookie:

bash

复制

下载

npm install js-cookie

然后在配置中使用:

typescript

复制

下载

import Cookies from 'js-cookie'persist: {storage: {getItem: (key) => Cookies.get(key),setItem: (key, value) => Cookies.set(key, value, { expires: 7 }),removeItem: (key) => Cookies.remove(key),},
}

全局默认配置

你可以在插件安装时设置全局默认配置:

typescript

复制

下载

pinia.use(piniaPluginPersistedstate, {storage: sessionStorage,beforeRestore: (ctx) => {console.log(`即将恢复 ${ctx.store.$id}`)},
})

TypeScript 支持

为了获得完整的 TypeScript 支持,你可以在 tsconfig.json 中添加:

json

复制

下载

{"compilerOptions": {"types": ["pinia-plugin-persistedstate"]}
}

注意事项

  1. 持久化大量数据可能会影响性能,建议只持久化必要的数据

  2. 敏感信息(如 token)应考虑加密存储

  3. 不同浏览器对 localStorage 的大小限制不同(通常约 5MB)

  4. 在 SSR 环境下使用时需要特别处理

http://www.dtcms.com/a/164984.html

相关文章:

  • 左右分屏电商带货视频批量混剪自动剪辑生产技术软件:智能剪辑与合规化方案解析
  • [特殊字符] 开发工作高内存占用场景下,Windows 内存压缩机制是否应该启用?实测分析与优化建议
  • Gradio全解20——Streaming:流式传输的多媒体应用(1)——流式传输音频:魔力8号球
  • 搭建基于 ChatGPT 的问答系统
  • centos 安装jenkins
  • 记录idea可以运行但是maven install打包却找不到问题
  • CentOS Linux 环境二进制方式安装 MySQL 5.7.32
  • 端到端观测分析:从前端负载均衡到后端服务
  • 前端封装WebSocket工具n
  • 【XR】MR芯片 和 VR芯片之争
  • 函数调用及Chain——SQL+GLM
  • Java 中的 设计模式详解
  • Linux容器大师:K8s集群部署入门指南
  • 【开源工具】Python打造智能IP监控系统:邮件告警+可视化界面+配置持久化
  • 扣子智能体3:进行音乐创作
  • Axure疑难杂症:中继器制作下拉菜单(多级中继器高级交互)
  • 【Dockerfile】Dockerfile打包Tomcat及TongWeb应用镜像(工作实践踩坑教学)
  • 阿里云服务迁移实战: 07-其他服务迁移
  • 【IP101】图像处理基础:从零开始学习颜色操作(RGB、灰度化、二值化、HSV变换)
  • 详细说明C++ 中的左值、右值与移动语义
  • nginx 配置要领
  • Spring Boot 数据库最佳实践:从自动配置到高性能优化
  • 2025东三省D题深圳杯D题数学建模挑战赛数模思路代码文章教学
  • LeetCode167_两数之和 Ⅱ - 输入有序数组
  • 大连理工大学选修课——机器学习笔记(6):决策树
  • 通过IP计算分析归属地
  • 2025年“深圳杯”数学建模挑战赛A题-芯片热弹性物理参数估计
  • 硬盘分区丢失≠末日!3步逻辑恢复法+物理修复全流程图解
  • 网易爆米花 1.8.8 | 免费无广告,支持多网盘聚合和智能刮削技术,提供顶级画质和逼真音效的影视管理应用
  • iOS 性能调优实战:三款工具横向对比实测(含 Instruments、KeyMob、Xlog)