当前位置: 首页 > 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 环境下使用时需要特别处理

相关文章:

  • 左右分屏电商带货视频批量混剪自动剪辑生产技术软件:智能剪辑与合规化方案解析
  • [特殊字符] 开发工作高内存占用场景下,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++ 中的左值、右值与移动语义
  • “五一”假期首日国铁郑州局迎大客流,预计发送旅客逾95万人次
  • 中国金茂向滨江集团提供11.21亿元诚意金借款,拟合作开发3月获取的地块
  • 中信银行一季度净利195.09亿增1.66%,不良率持平
  • 西湖大学本科招生新增三省两市,首次面向上海招生
  • 纪念|海上金石学的兴盛与王昶《金石萃编》
  • 马上评|“AI神医宇宙”欺诈,连演员都不请了