【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状态管理库

相关推荐
该用户已不存在5 分钟前
Gemini CLI 扩展,把Nano Banana 搬到终端
前端·后端·ai编程
地方地方7 分钟前
前端踩坑记:解决图片与 Div 换行间隙的隐藏元凶
前端·javascript
炒米233310 分钟前
【Array】数组的方法
javascript
小猫由里香12 分钟前
小程序打开文件(文件流、地址链接)封装
前端
Tzarevich16 分钟前
使用n8n工作流自动化生成每日科技新闻速览:告别信息过载,拥抱智能阅读
前端
voidmuse18 分钟前
带你零基础实现一个cursor (1):从零开始实现深度搜索功能-Function Call的介绍
javascript
掘金一周26 分钟前
一个前端工程师的年度作品:从零开发媲美商业级应用的后台管理系统 | 掘金一周 10.23
前端·人工智能·后端
大杯咖啡27 分钟前
前端常见的6种设计模式
前端·javascript
zyfts29 分钟前
手把手教学用nodejs读写飞书在线表格
前端
www_stdio30 分钟前
深入浅出 JavaScript:从对象字面量到代理模式的实践探索
javascript