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
  }
}
相关推荐
2501_920931705 小时前
React Native鸿蒙跨平台采用ScrollView的horizontal属性实现横向滚动实现特色游戏轮播和分类导航
javascript·react native·react.js·游戏·ecmascript·harmonyos
0思必得07 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
东东5167 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino7 小时前
图片、文件的预览
前端·javascript
2501_920931709 小时前
React Native鸿蒙跨平台实现推箱子游戏,完成玩家移动与箱子推动,当所有箱子都被推到目标位置时,玩家获胜
javascript·react native·react.js·游戏·ecmascript·harmonyos
layman05289 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔9 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李9 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN9 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化
啊哈一半醒9 小时前
CSS 主流布局
前端·css·css布局·标准流 浮动 定位·flex grid 响应式布局