uniapp pinia实现数据持久化插件

uniapp时间数据持久化兼容多端,话不多说直接上代码。

第一步新建一个插件index.js,内容如下:

javascript 复制代码
import { onLoad,onHide } from "@dcloudio/uni-app";

const KEYPREFIX = 'PINIA:STATE:'

export function storeStorage({store}){
	const KEY = KEYPREFIX + store.$id;
	onLoad(()=>{
		const item = uni.getStorageSync(KEY)
		if(!item) return;
		try{
			const originState = JSON.parse(item);
			store.$patch(originState)
		}catch(e){
			console.log('e',e);
			console.log('存储格式无效');
		}
	})
	onHide(()=>{
		uni.setStorageSync(KEY,JSON.stringify(store.$state))
	})
}

第二步,在main.js中引入并使用

javascript 复制代码
//路径是自己刚才所建js的文件路径
import {storeStorage} from '../plugins/storeStorage.js'
import * as Pinia from 'pinia';


import { createSSRApp } from 'vue'
export function createApp() {
  const app = createSSRApp(App)
  const pinia = Pinia.createPinia()
  pinia.use(storeStorage)
  app.use(pinia);
  return {
    app,
	Pinia
  }
}
相关推荐
Watermelo6174 分钟前
【前端实战】从 try-catch 回调到链式调用:一种更优雅的 async/await 错误处理方案
前端·javascript·网络·vue.js·算法·vue·用户体验
木易 士心4 分钟前
NestJS 核心揭秘:InstanceWrapper 的艺术与前端缓存新思路
前端·缓存
00后程序员张5 分钟前
iOS 抓包工具实战指南,从代理到数据流,全流程工具分工解析
android·ios·小程序·https·uni-app·iphone·webview
IT_陈寒8 分钟前
SpringBoot 3.x性能优化实战:这5个配置让你的应用启动速度提升50%
前端·人工智能·后端
奶昔不会射手9 分钟前
css之如何获取祖先元素的宽高
前端·css
serve the people9 分钟前
滑块验证完整实现教程(前端 + 后端 + Nginx 集成)
运维·前端·nginx
yivifu10 分钟前
Excel中Lookup函数实现临界点归入下一个等级的方法
java·前端·excel
Wiktok11 分钟前
Tailwind CSS 自适应相关
前端·css·tailwindcss
LYFlied12 分钟前
【一句话概括】Vue2 和 Vue3 的 diff 算法区别
前端·vue.js·算法·diff
亮子AI16 分钟前
Chrome 和 Edge 生成的 fingerprint 是一样的?
前端·chrome·edge