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

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.xdnf.cn/news/3381.html

相关文章:

  • win11 终端 安装ffmpeg 使用终端Scoop
  • Copilot 上线深度推理智能体 Researcher
  • Android pm命令参考
  • Windows系统下MinerU的CUDA加速配置指南
  • 6.1/Q1,浙江医院用NHANES:膳食中摄入黄酮类化合物有助于延缓生物衰老过程
  • 毫米波通信的技术挑战与解决方案
  • Nginx核心功能02
  • 对js的Date二次封装,继承了原Date的所有方法,增加了自己扩展的方法,可以实现任意时间往前往后推算多少小时、多少天、多少周、多少月;
  • django_rq
  • Unity编辑器扩展之导出项目中所有Script里面的文本内容
  • 《Python实战进阶》No45:性能分析工具 cProfile 与 line_profiler
  • 【SLAM】svo 的深度滤波和 msckf 的后端的点的优化的差异是什么?delayinit和depthfilter之间的差异是什么?
  • 多帧Dicom文件获取ImagePosition、Intercept、Slope、PixelSpacing
  • AndroidStudio生成AAR
  • 网页工具箱 --- 一个强大的浏览器脚本工具
  • 前端开发 Markdown 编辑器与富文本编辑器详解
  • 长尾关键词SEO优化策略精解
  • Vcpkg C++库管理工具安装
  • Azure AI Foundry实战:从零开始构建智能应用
  • 关于 live555延迟优化之缓存区优化“StreamParser::afterGettingBytes() warning: read”” 的解决方法
  • 晶振:从消费电子到航天领域的时间精度定义者
  • Git仓库目录的所有权问题
  • 2025 新生 DL-FWI 培训
  • Web开发-JavaEE应用SpringBoot栈模版注入ThymeleafFreemarkerVelocity
  • Antd Upload组件连续回车会多次触发文件夹弹窗的bug修复
  • MATLAB绘制饼图(二维/三维)
  • 如何解决服务器文件丢失或损坏的问题
  • linux中systemctl stop 和 kill -9的区别
  • 字节暑期实习-网络运维工程师面经
  • Java学习计划与资源推荐(入门到进阶、高阶、实战)