【Uni-App】Vue3如何使用pinia状态管理库与持久化

安装插件

pinia-plugin-unistorage

引入

js 复制代码
// main.js
import { createSSRApp } from "vue";
import * as Pinia from "pinia";
import { createUnistorage } from "pinia-plugin-unistorage";

export function createApp() {
  const app = createSSRApp(App);

  const store = Pinia.createPinia();

  // 关键代码 👇
  store.use(createUnistorage());

  app.use(store);

  return {
    app,
    Pinia, // 此处必须将 Pinia 返回
  };
}

初始化

根目录创建store文件夹,在该文件夹内添加pinia2.ts文件,内容如下:

js 复制代码
import {
	defineStore
} from "pinia";

export const useStore = defineStore("pinia2", {
	state() {
		return {
			someState: "hello pinia",
			token: ''
		};
	},
	unistorage: true, // 开启后对 state 的数据读写都将持久化
	// unistorage: {
	// 	// 初始化恢复前触发
	// 	beforeRestore(ctx) {},
	// 	// 初始化恢复后触发
	// 	afterRestore(ctx) {},
	// 	serializer: {
	// 		// 序列化,默认为 JSON.stringify
	// 		serialize(v) {
	// 			return JSON.stringify(v);
	// 		},
	// 		// 反序列化,默认为 JSON.parse
	// 		deserialize(v) {
	// 			return JSON.parse(v);
	// 		},
	// 	},
	// 	key: "foo", // 缓存的键,默认为该 store 的 id,这里是 main,
	// 	paths: ["foo", "nested.data"], // 需要缓存的路径,这里设置 foo 和 nested 下的 data 会被缓存
	// }
});


// setup 语法也支持
// export const useStore = defineStore(
//   "main",
//   () => {
//     const someState = ref("hello pinia");
//     return { someState };
//   },
//   {
//     unistorage: true, // 开启后对 state 的数据读写都将持久化
//   },
// );

页面使用

js 复制代码
<script>
	import {
		useStore
	} from '@/store/pinia2.ts'
	const pinia2 = useStore()
	export default {
		data() {
			return {
			}
		},
		methods: {
			startLogin() {
				console.log('count--------->1', pinia2.token);
				pinia2.token = '接口返回的token值'
				console.log('count--------->2', pinia2.token);
			},
		}
	}
</script>

参考资料

状态管理 Pinia
uni-app vue3如何使用pinia状态管理库

相关推荐
jianpeng的工程笔记13 分钟前
Colab Kaggle 防断开脚本
javascript·深度学习·kaggle·colab
yume_sibai15 分钟前
CSS2 核心知识点完全总结(选择器 + 三大特性 + 常用属性)
前端·css
掘金者阿豪18 分钟前
不装 SSH 客户端也能连服务器:用 WebSSH 把终端搬进浏览器
前端
Bug修理工Bubble37 分钟前
Optional:为什么一个 String? 能让代码少掉很多崩溃?
前端
巴勒个啦1 小时前
2026 年 CSS 选型真相:我用 Tailwind v4 + 原生新特性重构了一个组件库
前端·angular.js
LEE1 小时前
别再堆 AGENTS.md 了:前端团队如何把 AI Coding 做成一套可执行的工程系统
前端·后端
三十而立洋1 小时前
JavaScript 原型链:一张图讲透「对象继承」的底层真相
前端·javascript
工具派1 小时前
markdown在线编辑器怎么选?渲染管线的3个坑和md转PDF跑版记录
前端·后端
平头哥技术团队1 小时前
Day 13 | 调 line-height 和 margin:三处间距让名片页脱离模板感
开发语言·前端·javascript·学习·html5
一位正在转型AI全栈的前端工程师1 小时前
AI 全栈学习之旅 -Week 9:什么是AI Agent?从Function Calling到LangGraph
前端·python